<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/51">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/49. Linux 命令- iostat/">Linux 命令- iostat</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统中的 iostat是I/O statistics（输入/输出统计）的缩写，iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况，同时也会汇报出CPU使用情况。同vmstat一样，iostat也有一个弱点，就是它不能对某个进程进行深入分析，仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat [参数] [时间] [次数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况,    负载信息。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-c 显示CPU使用情况</li>
<li>-d 显示磁盘使用情况</li>
<li>-k 以 KB 为单位显示</li>
<li>-m 以 M 为单位显示</li>
<li>-N 显示磁盘阵列(LVM) 信息</li>
<li>-n 显示NFS 使用情况</li>
<li>-p[磁盘] 显示磁盘和分区的情况</li>
<li>-t 显示终端和CPU的信息</li>
<li>-x 显示详细信息</li>
<li>-V 显示版本信息</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示所有设备负载情况"><a href="#实例1：显示所有设备负载情况" class="headerlink" title="实例1：显示所有设备负载情况"></a>实例1：显示所有设备负载情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.30    0.02    5.07    0.17    0.00   86.44</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda              22.73        43.70       487.42  674035705 7517941952</div><div class="line">sda1              0.00         0.00         0.00       2658        536</div><div class="line">sda2              0.11         3.74         3.51   57721595   54202216</div><div class="line">sda3              0.98         0.61        17.51    9454172  270023368</div><div class="line">sda4              0.00         0.00         0.00          6          0</div><div class="line">sda5              6.95         0.12       108.73    1924834 1677123536</div><div class="line">sda6              2.20         0.18        31.22    2837260  481488056</div><div class="line">sda7             12.48        39.04       326.45  602094508 5035104240</div></pre></td></tr></table></figure>
<h4 id="说明："><a href="#说明：" class="headerlink" title="说明："></a>说明：</h4><h5 id="cpu属性值说明："><a href="#cpu属性值说明：" class="headerlink" title="cpu属性值说明："></a>cpu属性值说明：</h5><ul>
<li>%user：CPU处在用户模式下的时间百分比。</li>
<li>%nice：CPU处在带NICE值的用户模式下的时间百分比。</li>
<li>%system：CPU处在系统模式下的时间百分比。</li>
<li>%iowait：CPU等待输入输出完成时间的百分比。</li>
<li>%steal：管理程序维护另一个虚拟处理器时，虚拟CPU的无意识等待时间百分比。</li>
<li>%idle：CPU空闲时间百分比。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>备注</strong>：如果%iowait的值过高，表示硬盘存在I/O瓶颈，%idle值高，表示CPU较空闲，如果%idle值高但系统响应慢时，有可能是CPU等待分配内存，此时应加大内存容量。%idle值如果持续低于10，那么系统的CPU处理能力相对较低，表明系统中最需要解决的资源是CPU。</p>
<h5 id="disk属性值说明："><a href="#disk属性值说明：" class="headerlink" title="disk属性值说明："></a>disk属性值说明：</h5><ul>
<li>rrqm/s:  每秒进行 merge 的读操作数目。即 rmerge/s</li>
<li>wrqm/s:  每秒进行 merge 的写操作数目。即 wmerge/s</li>
<li>r/s:  每秒完成的读 I/O 设备次数。即 rio/s</li>
<li>w/s:  每秒完成的写 I/O 设备次数。即 wio/s</li>
<li>rsec/s:  每秒读扇区数。即 rsect/s</li>
<li>wsec/s:  每秒写扇区数。即 wsect/s</li>
<li>rkB/s:  每秒读K字节数。是 rsect/s 的一半，因为每扇区大小为512字节。</li>
<li>wkB/s:  每秒写K字节数。是 wsect/s 的一半。</li>
<li>avgrq-sz:  平均每次设备I/O操作的数据大小 (扇区)。</li>
<li>avgqu-sz:  平均I/O队列长度。</li>
<li>await:  平均每次设备I/O操作的等待时间 (毫秒)。</li>
<li>svctm: 平均每次设备I/O操作的服务时间 (毫秒)。</li>
<li>%util:  一秒中有百分之多少的时间用于 I/O 操作，即被io消耗的cpu百分比</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>备注</strong>：如果 %util 接近 100%，说明产生的I/O请求太多，I/O系统已经满负荷，该磁盘可能存在瓶颈。如果 svctm 比较接近 await，说明 I/O 几乎没有等待时间；如果 await 远大于 svctm，说明I/O 队列太长，io响应太慢，则需要进行必要优化。如果avgqu-sz比较大，也表示有当量io在等待。</p>
<h3 id="实例2：定时显示所有信息"><a href="#实例2：定时显示所有信息" class="headerlink" title="实例2：定时显示所有信息"></a>实例2：定时显示所有信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat 2 3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat 2 3</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.30    0.02    5.07    0.17    0.00   86.44</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda              22.73        43.70       487.42  674035705 7517947296</div><div class="line">sda1              0.00         0.00         0.00       2658        536</div><div class="line">sda2              0.11         3.74         3.51   57721595   54202216</div><div class="line">sda3              0.98         0.61        17.51    9454172  270023608</div><div class="line">sda4              0.00         0.00         0.00          6          0</div><div class="line">sda5              6.95         0.12       108.73    1924834 1677125640</div><div class="line">sda6              2.20         0.18        31.22    2837260  481488152</div><div class="line">sda7             12.48        39.04       326.44  602094508 5035107144</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.88    0.00    7.94    0.19    0.00   83.00</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda               6.00         0.00       124.00          0        248</div><div class="line">sda1              0.00         0.00         0.00          0          0</div><div class="line">sda2              0.00         0.00         0.00          0          0</div><div class="line">sda3              0.00         0.00         0.00          0          0</div><div class="line">sda4              0.00         0.00         0.00          0          0</div><div class="line">sda5              0.00         0.00         0.00          0          0</div><div class="line">sda6              0.00         0.00         0.00          0          0</div><div class="line">sda7              6.00         0.00       124.00          0        248</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           9.12    0.00    7.81    0.00    0.00   83.07</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda               4.00         0.00        84.00          0        168</div><div class="line">sda1              0.00         0.00         0.00          0          0</div><div class="line">sda2              0.00         0.00         0.00          0          0</div><div class="line">sda3              0.00         0.00         0.00          0          0</div><div class="line">sda4              0.00         0.00         0.00          0          0</div><div class="line">sda5              0.00         0.00         0.00          0          0</div><div class="line">sda6              4.00         0.00        84.00          0        168</div><div class="line">sda7              0.00         0.00         0.00          0          0</div></pre></td></tr></table></figure>
<h4 id="说明：-1"><a href="#说明：-1" class="headerlink" title="说明："></a>说明：</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每隔 2秒刷新显示，且显示3次</p>
<h3 id="实例3：显示指定磁盘信息"><a href="#实例3：显示指定磁盘信息" class="headerlink" title="实例3：显示指定磁盘信息"></a>实例3：显示指定磁盘信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -d sda1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat -d sda1</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda1              0.00         0.00         0.00       2658        536</div></pre></td></tr></table></figure>
<h3 id="实例4：显示tty和Cpu信息"><a href="#实例4：显示tty和Cpu信息" class="headerlink" title="实例4：显示tty和Cpu信息"></a>实例4：显示tty和Cpu信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -t</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat -t</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">Time: 14时58分35秒</div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.30    0.02    5.07    0.17    0.00   86.44</div><div class="line"></div><div class="line">Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn</div><div class="line">sda              22.73        43.70       487.41  674035705 7517957864</div><div class="line">sda1              0.00         0.00         0.00       2658        536</div><div class="line">sda2              0.11         3.74         3.51   57721595   54202216</div><div class="line">sda3              0.98         0.61        17.51    9454172  270024344</div><div class="line">sda4              0.00         0.00         0.00          6          0</div><div class="line">sda5              6.95         0.12       108.73    1924834 1677128808</div><div class="line">sda6              2.20         0.18        31.22    2837260  481488712</div><div class="line">sda7             12.48        39.04       326.44  602094508 5035113248</div></pre></td></tr></table></figure>
<h3 id="实例5：以M为单位显示所有信息"><a href="#实例5：以M为单位显示所有信息" class="headerlink" title="实例5：以M为单位显示所有信息"></a>实例5：以M为单位显示所有信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -m</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat -m</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.30    0.02    5.07    0.17    0.00   86.44</div><div class="line"></div><div class="line">Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn</div><div class="line">sda              22.72         0.02         0.24     329119    3670881</div><div class="line">sda1              0.00         0.00         0.00          1          0</div><div class="line">sda2              0.11         0.00         0.00      28184      26465</div><div class="line">sda3              0.98         0.00         0.01       4616     131848</div><div class="line">sda4              0.00         0.00         0.00          0          0</div><div class="line">sda5              6.95         0.00         0.05        939     818911</div><div class="line">sda6              2.20         0.00         0.02       1385     235102</div><div class="line">sda7             12.48         0.02         0.16     293991    2458553</div></pre></td></tr></table></figure>
<h3 id="实例6：查看TPS和吞吐量信息"><a href="#实例6：查看TPS和吞吐量信息" class="headerlink" title="实例6：查看TPS和吞吐量信息"></a>实例6：查看TPS和吞吐量信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -d -k 1 1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat -d -k 1 1</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn</div><div class="line">sda              22.72        21.85       243.71  337017916 3758984340</div><div class="line">sda1              0.00         0.00         0.00       1329        268</div><div class="line">sda2              0.11         1.87         1.76   28860797   27101108</div><div class="line">sda3              0.98         0.31         8.75    4727086  135012508</div><div class="line">sda4              0.00         0.00         0.00          3          0</div><div class="line">sda5              6.95         0.06        54.37     962481  838566148</div><div class="line">sda6              2.20         0.09        15.61    1418630  240744712</div><div class="line">sda7             12.48        19.52       163.22  301047254 2517559596</div></pre></td></tr></table></figure>
<h4 id="说明：-2"><a href="#说明：-2" class="headerlink" title="说明："></a>说明：</h4><ul>
<li>tps：该设备每秒的传输次数（Indicate the number of transfers per second that were issued to the device.）。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。</li>
<li>kB_read/s：每秒从设备（drive expressed）读取的数据量；</li>
<li>kB_wrtn/s：每秒向设备（drive expressed）写入的数据量；</li>
<li>kB_read：读取的总数据量；kB_wrtn：写入的总数量数据量；</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些单位都为Kilobytes。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;上面的例子中，我们可以看到磁盘sda以及它的各个分区的统计数据，当时统计的磁盘总TPS是22.73，下面是各个分区的TPS。（因为是瞬间值，所以总TPS并不严格等于各个分区TPS的总和）</p>
<h3 id="实例7：查看设备使用率（-util）、响应时间（await）"><a href="#实例7：查看设备使用率（-util）、响应时间（await）" class="headerlink" title="实例7：查看设备使用率（%util）、响应时间（await）"></a>实例7：查看设备使用率（%util）、响应时间（await）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -d -x -k 1 1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment"># iostat -d -x -k 1 1</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util</div><div class="line">sda               0.44    38.59  0.40 22.32    21.85   243.71    23.37     0.04    1.78   4.20   9.54</div><div class="line">sda1              0.00     0.00  0.00  0.00     0.00     0.00    18.90     0.00    8.26   6.46   0.00</div><div class="line">sda2              0.36     0.43  0.11  0.01     1.87     1.76    63.57     0.01   63.75   1.94   0.02</div><div class="line">sda3              0.00     1.24  0.04  0.95     0.31     8.75    18.42     0.04   39.77   8.73   0.86</div><div class="line">sda4              0.00     0.00  0.00  0.00     0.00     0.00     2.00     0.00   19.67  19.67   0.00</div><div class="line">sda5              0.00     6.65  0.00  6.94     0.06    54.37    15.67     0.26   36.81   4.48   3.11</div><div class="line">sda6              0.00     1.71  0.01  2.19     0.09    15.61    14.29     0.03   12.40   5.84   1.28</div><div class="line">sda7              0.08    28.56  0.25 12.24    19.52   163.22    29.28     0.27   21.46   5.00   6.25</div></pre></td></tr></table></figure>
<h4 id="说明：-3"><a href="#说明：-3" class="headerlink" title="说明："></a>说明：</h4><ul>
<li>rrqm/s：  每秒进行 merge 的读操作数目.即 delta(rmerge)/s</li>
<li>wrqm/s： 每秒进行 merge 的写操作数目.即 delta(wmerge)/s</li>
<li>r/s：  每秒完成的读 I/O 设备次数.即 delta(rio)/s</li>
<li>w/s：  每秒完成的写 I/O 设备次数.即 delta(wio)/s</li>
<li>rsec/s：  每秒读扇区数.即 delta(rsect)/s</li>
<li>wsec/s： 每秒写扇区数.即 delta(wsect)/s</li>
<li>rkB/s：  每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)</li>
<li>wkB/s：  每秒写K字节数.是 wsect/s 的一半.(需要计算)</li>
<li>avgrq-sz：平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)</li>
<li>avgqu-sz：平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).</li>
<li>await：  平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)</li>
<li>svctm： 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)</li>
<li>%util： 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的，即 delta(use)/s/1000 (因为use的单位为毫秒)</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果 %util 接近 100%，说明产生的I/O请求太多，I/O系统已经满负荷，该磁盘可能存在瓶颈。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;idle小于70% IO压力就较大了，一般读取速度有较多的wait。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比，高过30%时IO压力高)。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;另外 await 的参数也要多和 svctm 来参考。差的过高就一定有 IO 的问题。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;avgqu-sz 也是个做 IO 调优时需要注意的地方，这个就是直接每次操作的数据的大小，如果次数多，但数据拿的小的话，其实 IO 也会很小。如果数据拿的大，才IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是讲，读定速度是这个来决定的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了)，svctm 的大小一般和磁盘性能有关，CPU/内存的负荷也会对其有影响，请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await，说明 I/O 几乎没有等待时间；如果 await 远大于 svctm，说明 I/O 队列太长，应用得到的响应时间变慢，如果响应时间超过了用户可以容许的范围，这时可以考虑更换更快的磁盘，调整内核 elevator 算法，优化应用，或者升级 CPU。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标，但由于 avgqu-sz 是按照单位时间的平均值，所以不能反映瞬间的 I/O 洪水。</p>
<h4 id="形象的比喻："><a href="#形象的比喻：" class="headerlink" title="形象的比喻："></a>形象的比喻：</h4><ul>
<li>r/s+w/s 类似于交款人的总数</li>
<li>平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数</li>
<li>平均服务时间(svctm)类似于收银员的收款速度</li>
<li>平均等待时间(await)类似于平均每人的等待时间</li>
<li>平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少</li>
<li>I/O 操作率 (%util)类似于收款台前有人排队的时间比例</li>
<li>设备IO操作:总IO(io)/s = r/s(读) +w/s(写) =1.46 + 25.28=26.74</li>
<li>平均每次设备I/O操作只需要0.36毫秒完成,现在却需要10.57毫秒完成，因为发出的    请求太多(每秒26.74个)，假如请求时同时发出的，可以这样计算平均等待时间:</li>
<li>平均等待时间=单个I/O服务器时间*(1+2+…+请求总数-1)/请求总数 </li>
<li>每秒发出的I/0请求很多,但是平均队列就4,表示这些请求比较均匀,大部分处理还是比较及时。</li>
</ul>
<h3 id="实例8：查看cpu状态"><a href="#实例8：查看cpu状态" class="headerlink" title="实例8：查看cpu状态"></a>实例8：查看cpu状态</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">iostat -c 1 3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@CT1186 ~]<span class="comment">#  iostat -c 1 3</span></div><div class="line">Linux 2.6.18-128.el5 (CT1186)   2012年12月28日</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.30    0.02    5.07    0.17    0.00   86.44</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           8.64    0.00    5.38    0.00    0.00   85.98</div><div class="line"></div><div class="line">avg-cpu:  %user   %nice %system %iowait  %steal   %idle</div><div class="line">           7.62    0.00    5.12    0.50    0.00   86.75</div></pre></td></tr></table></figure>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/48. Linux 命令- vmstat/">Linux 命令- vmstat</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vmstat是Virtual Meomory Statistics（虚拟内存统计）的缩写，可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计，不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具，在非常高负荷的服务器上，你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。在学习vmstat命令前，我们先了解一下Linux系统中关于物理内存和虚拟内存相关信息。</p>
<h2 id="物理内存和虚拟内存区别："><a href="#物理内存和虚拟内存区别：" class="headerlink" title="物理内存和虚拟内存区别："></a>物理内存和虚拟内存区别：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我们知道，直接从物理内存读写数据要比从硬盘读写数据要快的多，因此，我们希望所有数据的读取和写入都在内存完成，而内存是有限的，这样就引出了物理内存与虚拟内存的概念。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;物理内存就是系统硬件提供的内存大小，是真正的内存，相对于物理内存，在linux下还有一个虚拟内存的概念，虚拟内存就是为了满足物理内存的不足而提出的策略，它是利用磁盘空间虚拟出的一块逻辑内存，用作虚拟内存的磁盘空间被称为交换空间（Swap Space）。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;作为物理内存的扩展，linux会在物理内存不足时，使用交换分区的虚拟内存，更详细的说，就是内核会将暂时不用的内存块信息写到交换空间，这样以来，物理内存得到了释放，这块内存就可以用于其它目的，当需要用到原始的内容时，这些信息会被重新从交换空间读入物理内存。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;linux的内存管理采取的是分页存取机制，为了保证物理内存能得到充分的利用，内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中，而将经常使用的信息保留到物理内存。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要深入了解linux内存运行机制，需要知道下面提到的几个方面：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先，Linux系统会不时的进行页面交换操作，以保持尽可能多的空闲物理内存，即使并没有什么事情需要内存，Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其次，linux进行页面交换是有条件的，不是所有页面在不用时都交换到虚拟内存，linux内核根据”最近最经常使用“算法，仅仅将一些不经常使用的页面文件交换到虚拟内存，有时我们会看到这么一个现象：linux物理内存还有很多，但是交换空间也使用了很多。其实，这并不奇怪，例如，一个占用很大内存的进程运行时，需要耗费很多内存资源，此时就会有一些不常用页面文件被交换到虚拟内存中，但后来这个占用很多内存资源的进程结束并释放了很多内存时，刚才被交换出去的页面文件并不会自动的交换进物理内存，除非有这个必要，那么此刻系统物理内存就会空闲很多，同时交换空间也在被使用，就出现了刚才所说的现象了。关于这点，不用担心什么，只要知道是怎么一回事就可以了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最后，交换空间的页面在使用时会首先被交换到物理内存，如果此时没有足够的物理内存来容纳这些页面，它们又会被马上交换出去，如此以来，虚拟内存中可能没有足够空间来存储这些交换页面，最终会导致linux出现假死机、服务异常等问题，linux虽然可以在一段时间内自行恢复，但是恢复后的系统已经基本不可用了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;因此，合理规划和设计linux内存的使用，是非常重要的。</p>
<h2 id="虚拟内存原理："><a href="#虚拟内存原理：" class="headerlink" title="虚拟内存原理："></a>虚拟内存原理：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在系统中运行的每个进程都需要使用到内存，但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存，内核会释放某些进程所占用但未使用的部分或所有物理内存，将这部分资料存储在磁盘上直到进程下一次调用，并将释放出的内存提供给有需要的进程使用。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Linux内存管理中，主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上，把活动页面保留在内存中供进程使用。交换技术是将整个进程，而不是部分页面，全部交换到磁盘上。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;分页(Page)写入磁盘的过程被称作Page-Out，分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时，但发现此分页不在物理内存中(因为已经被Page-Out了)，此时就发生了分页错误（Page Fault）。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当系统内核发现可运行内存变少时，就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生，但是如果Page-out频繁不断的发生，直到当内核管理分页的时间超过运行程式的时间时，系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态，这种状态亦被称作thrashing(颠簸)。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">vmstat [-a] [-n] [-S unit] [delay [ count]]</div><div class="line">vmstat [-s] [-n] [-S unit]</div><div class="line">vmstat [-m] [-n] [delay [ count]]</div><div class="line">vmstat [-d] [-n] [delay [ count]]</div><div class="line">vmstat [-p disk partition] [-n] [delay [ count]]</div><div class="line">vmstat [-f]</div><div class="line">vmstat [-V]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用来显示虚拟内存的信息</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-a：显示活跃和非活跃内存</li>
<li>-f：显示从系统启动至今的fork数量 。</li>
<li>-m：显示slabinfo</li>
<li>-n：只在开始时显示一次各字段名称。</li>
<li>-s：显示内存相关统计信息及多种系统活动数量。</li>
<li>delay：刷新时间间隔。如果不指定，只显示一条结果。</li>
<li>count：刷新次数。如果不指定刷新次数，但指定了刷新时间间隔，这时刷新次数为无穷。</li>
<li>-d：显示磁盘相关统计信息。</li>
<li>-p：显示指定磁盘分区统计信息</li>
<li>-S：使用指定单位显示。参数有 k 、K 、m 、M ，分别代表1000、1024、1000000、1048576字节（byte）。默认单位为K（1024 bytes）</li>
<li>-V：显示vmstat版本信息。</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示虚拟内存使用情况"><a href="#实例1：显示虚拟内存使用情况" class="headerlink" title="实例1：显示虚拟内存使用情况"></a>实例1：显示虚拟内存使用情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vmstat 5 6</span></div><div class="line">procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------</div><div class="line"> r  b   swpd   free   buff  cache   si   so    bi    bo   <span class="keyword">in</span>   cs us sy id wa st</div><div class="line"> 0  0      0 3029876 199616 690980    0    0     0     2    3    2  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 199616 690980    0    0     0    41 1009   39  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 199616 690980    0    0     0     3 1004   36  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 199616 690980    0    0     0     4 1004   36  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 199616 690980    0    0     0     6 1003   33  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 199616 690980    0    0     0     5 1003   33  0  0 100  0  0</div></pre></td></tr></table></figure>
<h4 id="说明："><a href="#说明：" class="headerlink" title="说明："></a>说明：</h4><h5 id="字段说明："><a href="#字段说明：" class="headerlink" title="字段说明："></a>字段说明：</h5><h6 id="Procs（进程）："><a href="#Procs（进程）：" class="headerlink" title="Procs（进程）："></a>Procs（进程）：</h6><ul>
<li>r: 运行队列中进程数量</li>
<li>b: 等待IO的进程数量</li>
</ul>
<h6 id="Memory（内存）："><a href="#Memory（内存）：" class="headerlink" title="Memory（内存）："></a>Memory（内存）：</h6><ul>
<li>swpd: 使用虚拟内存大小</li>
<li>free: 可用内存大小</li>
<li>buff: 用作缓冲的内存大小</li>
<li>cache: 用作缓存的内存大小</li>
</ul>
<h6 id="Swap："><a href="#Swap：" class="headerlink" title="Swap："></a>Swap：</h6><ul>
<li>si: 每秒从交换区写到内存的大小</li>
<li>so: 每秒写入交换区的内存大小</li>
<li>IO：（现在的Linux版本块的大小为1024bytes）</li>
<li>bi: 每秒读取的块数</li>
<li>bo: 每秒写入的块数</li>
</ul>
<h6 id="系统："><a href="#系统：" class="headerlink" title="系统："></a>系统：</h6><ul>
<li>in: 每秒中断数，包括时钟中断。</li>
<li>cs: 每秒上下文切换数。</li>
</ul>
<h6 id="CPU（以百分比表示）："><a href="#CPU（以百分比表示）：" class="headerlink" title="CPU（以百分比表示）："></a>CPU（以百分比表示）：</h6><ul>
<li>us: 用户进程执行时间(user time)</li>
<li>sy: 系统进程执行时间(system time)</li>
<li>id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。</li>
<li>wa: 等待IO时间</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;备注： 如果 r经常大于 4 ，且id经常少于40，表示cpu的负荷很重。如果bi，bo 长期不等于0，表示内存不足。如果disk 经常不等于0， 且在 b中的队列 大于3， 表示 io性能不好。Linux在具有高稳定性、可靠性的同时，具有很好的可伸缩性和扩展性，能够针对不同的应用和硬件环境调整，优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时，了解系统性能分析工具是至关重要的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;命令：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat 5 5</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;表示在5秒时间内进行5次采样。将得到一个数据汇总他能够反映真正的系统情况。</p>
<h3 id="实例2：显示活跃和非活跃内存"><a href="#实例2：显示活跃和非活跃内存" class="headerlink" title="实例2：显示活跃和非活跃内存"></a>实例2：显示活跃和非活跃内存</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -a 2 5</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vmstat -a 2 5</span></div><div class="line">procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------</div><div class="line"> r  b   swpd   free  inact active   si   so    bi    bo   <span class="keyword">in</span>   cs us sy id wa st</div><div class="line"> 0  0      0 3029752 387728 513008    0    0     0     2    3    2  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 387728 513076    0    0     0     0 1005   34  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 387728 513076    0    0     0    22 1004   36  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 387728 513076    0    0     0     0 1004   33  0  0 100  0  0</div><div class="line"> 0  0      0 3029752 387728 513076    0    0     0     0 1003   32  0  0 100  0  0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h4 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用-a选项显示活跃和非活跃内存时，所显示的内容除增加inact和active外，其他显示内容与例子1相同。</p>
<h5 id="字段说明：-1"><a href="#字段说明：-1" class="headerlink" title="字段说明："></a>字段说明：</h5><h6 id="Memory（内存）：-1"><a href="#Memory（内存）：-1" class="headerlink" title="Memory（内存）："></a>Memory（内存）：</h6><ul>
<li>inact: 非活跃内存大小（当使用-a选项时显示）</li>
<li>active: 活跃的内存大小（当使用-a选项时显示）</li>
</ul>
<h3 id="实例3：查看系统已经fork了多少次"><a href="#实例3：查看系统已经fork了多少次" class="headerlink" title="实例3：查看系统已经fork了多少次"></a>实例3：查看系统已经fork了多少次</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -f</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@SCF1129 ~]<span class="comment"># vmstat -f</span></div><div class="line">     12744849 forks</div><div class="line">[root@SCF1129 ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h4 id="说明：-1"><a href="#说明：-1" class="headerlink" title="说明："></a>说明：</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这个数据是从/proc/stat中的processes字段里取得的</p>
<h3 id="实例4：查看内存使用的详细信息"><a href="#实例4：查看内存使用的详细信息" class="headerlink" title="实例4：查看内存使用的详细信息"></a>实例4：查看内存使用的详细信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -s</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vmstat -s</span></div><div class="line">      4043760  total memory</div><div class="line">      1013884  used memory</div><div class="line">       513012  active memory</div><div class="line">       387728  inactive memory</div><div class="line">      3029876  free memory</div><div class="line">       199616  buffer memory</div><div class="line">       690980  swap cache</div><div class="line">      6096656  total swap</div><div class="line">            0  used swap</div><div class="line">      6096656  free swap</div><div class="line">        83587 non-nice user cpu ticks</div><div class="line">          132 nice user cpu ticks</div><div class="line">       278599 system cpu ticks</div><div class="line">    913344692 idle cpu ticks</div><div class="line">       814550 IO-wait cpu ticks</div><div class="line">        10547 IRQ cpu ticks</div><div class="line">        21261 softirq cpu ticks</div><div class="line">            0 stolen cpu ticks</div><div class="line">       310215 pages paged <span class="keyword">in</span></div><div class="line">     14254652 pages paged out</div><div class="line">            0 pages swapped <span class="keyword">in</span></div><div class="line">            0 pages swapped out</div><div class="line">    288374745 interrupts</div><div class="line">    146680577 CPU context switches</div><div class="line">   1351868832 boot time</div><div class="line">       367291 forks</div></pre></td></tr></table></figure>
<h4 id="说明-1"><a href="#说明-1" class="headerlink" title="说明"></a>说明</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。</p>
<h3 id="实例5：查看磁盘的读-写"><a href="#实例5：查看磁盘的读-写" class="headerlink" title="实例5：查看磁盘的读/写"></a>实例5：查看磁盘的读/写</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -d</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vmstat -d</span></div><div class="line">disk- ------------reads------------ ------------writes----------- -----IO------</div><div class="line">       total merged sectors      ms  total merged sectors      ms    cur    sec</div><div class="line">ram0       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram1       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram2       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram3       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram4       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram5       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram6       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram7       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram8       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram9       0      0       0       0      0      0       0       0      0      0</div><div class="line">ram10      0      0       0       0      0      0       0       0      0      0</div><div class="line">ram11      0      0       0       0      0      0       0       0      0      0</div><div class="line">ram12      0      0       0       0      0      0       0       0      0      0</div><div class="line">ram13      0      0       0       0      0      0       0       0      0      0</div><div class="line">ram14      0      0       0       0      0      0       0       0      0      0</div><div class="line">ram15      0      0       0       0      0      0       0       0      0      0</div><div class="line">sda    33381   6455  615407   63224 2068111 1495416 28508288 15990289      0  10491</div><div class="line">hdc        0      0       0       0      0      0       0       0      0      0</div><div class="line">fd0        0      0       0       0      0      0       0       0      0      0</div><div class="line">md0        0      0       0       0      0      0       0       0      0      0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h4 id="说明-2"><a href="#说明-2" class="headerlink" title="说明"></a>说明</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些信息主要来自于/proc/diskstats.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.</p>
<h3 id="实例6：查看-dev-sda1磁盘的读-写"><a href="#实例6：查看-dev-sda1磁盘的读-写" class="headerlink" title="实例6：查看/dev/sda1磁盘的读/写"></a>实例6：查看/dev/sda1磁盘的读/写</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -p /dev/sda1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@SCF1129 ~]<span class="comment"># df</span></div><div class="line">文件系统                 1K-块      已用      可用 已用% 挂载点</div><div class="line">/dev/sda3            1119336548  27642068 1034835500   3% /tmpfs                 32978376         0  32978376   0% /dev/shm</div><div class="line">/dev/sda1              1032088     59604    920056   7% /boot</div><div class="line">[root@SCF1129 ~]<span class="comment"># vmstat -p /dev/sda1</span></div><div class="line">sda1          reads   <span class="built_in">read</span> sectors  writes    requested writes</div><div class="line">               18607    4249978          6         48[root@SCF1129 ~]<span class="comment"># vmstat -p /dev/sda3</span></div><div class="line">sda3          reads   <span class="built_in">read</span> sectors  writes    requested writes</div><div class="line">              429350   35176268   28998789  980301488[root@SCF1129 ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h4 id="说明-3"><a href="#说明-3" class="headerlink" title="说明"></a>说明</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些信息主要来自于/proc/diskstats。</p>
<ul>
<li>reads:来自于这个分区的读的次数。</li>
<li>read sectors:来自于这个分区的读扇区的次数。</li>
<li>writes:来自于这个分区的写的次数。</li>
<li>requested writes:来自于这个分区的写请求次数。</li>
</ul>
<h3 id="实例7：查看系统的slab信息"><a href="#实例7：查看系统的slab信息" class="headerlink" title="实例7：查看系统的slab信息"></a>实例7：查看系统的slab信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vmstat -m</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vmstat -m</span></div><div class="line">Cache                       Num  Total   Size  Pages</div><div class="line">ip_conntrack_expect           0      0    136     28</div><div class="line">ip_conntrack                  3     13    304     13</div><div class="line">ip_fib_alias                 11     59     64     59</div><div class="line">ip_fib_hash                  11     59     64     59</div><div class="line">AF_VMCI                       0      0    960      4</div><div class="line">bio_map_info                100    105   1064      7</div><div class="line">dm_mpath                      0      0   1064      7</div><div class="line">jbd_4k                        0      0   4096      1</div><div class="line">dm_uevent                     0      0   2608      3</div><div class="line">dm_tio                        0      0     24    144</div><div class="line">dm_io                         0      0     48     77</div><div class="line">scsi_cmd_cache               10     10    384     10</div><div class="line">sgpool-128                   32     32   4096      1</div><div class="line">sgpool-64                    32     32   2048      2</div><div class="line">sgpool-32                    32     32   1024      4</div><div class="line">sgpool-16                    32     32    512      8</div><div class="line">sgpool-8                     45     45    256     15</div><div class="line">scsi_io_context               0      0    112     34</div><div class="line">ext3_inode_cache          51080  51105    760      5</div><div class="line">ext3_xattr                   36     88     88     44</div><div class="line">journal_handle               18    144     24    144</div><div class="line">journal_head                 56     80     96     40</div><div class="line">revoke_table                  4    202     16    202</div><div class="line">revoke_record                 0      0     32    112</div><div class="line">uhci_urb_priv                 0      0     56     67</div><div class="line">UNIX                         13     33    704     11</div><div class="line">flow_cache                    0      0    128     30</div><div class="line">msi_cache                    33     59     64     59</div><div class="line">cfq_ioc_pool                 14     90    128     30</div><div class="line">cfq_pool                     12     90    216     18</div><div class="line">crq_pool                     16     96     80     48</div><div class="line">deadline_drq                  0      0     80     48</div><div class="line">as_arq                        0      0     96     40</div><div class="line">mqueue_inode_cache            1      4    896      4</div><div class="line">isofs_inode_cache             0      0    608      6</div><div class="line">hugetlbfs_inode_cache         1      7    576      7</div><div class="line">Cache                       Num  Total   Size  Pages</div><div class="line">ext2_inode_cache              0      0    720      5</div><div class="line">ext2_xattr                    0      0     88     44</div><div class="line">dnotify_cache                 0      0     40     92</div><div class="line">dquot                         0      0    256     15</div><div class="line">eventpoll_pwq                 3     53     72     53</div><div class="line">eventpoll_epi                 3     20    192     20</div><div class="line">inotify_event_cache           0      0     40     92</div><div class="line">inotify_watch_cache           1     53     72     53</div><div class="line">kioctx                        0      0    320     12</div><div class="line">kiocb                         0      0    256     15</div><div class="line">fasync_cache                  0      0     24    144</div><div class="line">shmem_inode_cache           254    290    768      5</div><div class="line">posix_timers_cache            0      0    128     30</div><div class="line">uid_cache                     0      0    128     30</div><div class="line">ip_mrt_cache                  0      0    128     30</div><div class="line">tcp_bind_bucket               3    112     32    112</div><div class="line">inet_peer_cache               0      0    128     30</div><div class="line">secpath_cache                 0      0     64     59</div><div class="line">xfrm_dst_cache                0      0    384     10</div><div class="line">ip_dst_cache                  5     10    384     10</div><div class="line">arp_cache                     1     15    256     15</div><div class="line">RAW                           3      5    768      5</div><div class="line">UDP                           5     10    768      5</div><div class="line">tw_sock_TCP                   0      0    192     20</div><div class="line">request_sock_TCP              0      0    128     30</div><div class="line">TCP                           4      5   1600      5</div><div class="line">blkdev_ioc                   14    118     64     59</div><div class="line">blkdev_queue                 20     30   1576      5</div><div class="line">blkdev_requests              13     42    272     14</div><div class="line">biovec-256                    7      7   4096      1</div><div class="line">biovec-128                    7      8   2048      2</div><div class="line">biovec-64                     7      8   1024      4</div><div class="line">biovec-16                     7     15    256     15</div><div class="line">biovec-4                      7     59     64     59</div><div class="line">biovec-1                     23    202     16    202</div><div class="line">bio                         270    270    128     30</div><div class="line">utrace_engine_cache           0      0     64     59</div><div class="line">Cache                       Num  Total   Size  Pages</div><div class="line">utrace_cache                  0      0     64     59</div><div class="line">sock_inode_cache             33     48    640      6</div><div class="line">skbuff_fclone_cache           7      7    512      7</div><div class="line">skbuff_head_cache           319    390    256     15</div><div class="line">file_lock_cache               1     22    176     22</div><div class="line">Acpi-Operand               4136   4248     64     59</div><div class="line">Acpi-ParseExt                 0      0     64     59</div><div class="line">Acpi-Parse                    0      0     40     92</div><div class="line">Acpi-State                    0      0     80     48</div><div class="line">Acpi-Namespace             2871   2912     32    112</div><div class="line">delayacct_cache              81    295     64     59</div><div class="line">taskstats_cache               4     53     72     53</div><div class="line">proc_inode_cache           1427   1440    592      6</div><div class="line">sigqueue                      0      0    160     24</div><div class="line">radix_tree_node           13166  13188    536      7</div><div class="line">bdev_cache                   23     24    832      4</div><div class="line">sysfs_dir_cache            5370   5412     88     44</div><div class="line">mnt_cache                    26     30    256     15</div><div class="line">inode_cache                2009   2009    560      7</div><div class="line">dentry_cache              60952  61020    216     18</div><div class="line">filp                        479   1305    256     15</div><div class="line">names_cache                   3      3   4096      1</div><div class="line">avc_node                     14     53     72     53</div><div class="line">selinux_inode_security      994   1200     80     48</div><div class="line">key_jar                       2     20    192     20</div><div class="line">idr_layer_cache              74     77    528      7</div><div class="line">buffer_head              164045 164800     96     40</div><div class="line">mm_struct                    51     56    896      4</div><div class="line">vm_area_struct             1142   1958    176     22</div><div class="line">fs_cache                     35    177     64     59</div><div class="line">files_cache                  36     55    768      5</div><div class="line">signal_cache                 72    162    832      9</div><div class="line">sighand_cache                68     84   2112      3</div><div class="line">task_struct                  76     80   1888      2</div><div class="line">anon_vma                    458    864     24    144</div><div class="line">pid                          83    295     64     59</div><div class="line">shared_policy_node            0      0     48     77</div><div class="line">Cache                       Num  Total   Size  Pages</div><div class="line">numa_policy                  37    144     24    144</div><div class="line">size-131072(DMA)              0      0 131072      1</div><div class="line">size-131072                   0      0 131072      1</div><div class="line">size-65536(DMA)               0      0  65536      1</div><div class="line">size-65536                    1      1  65536      1</div><div class="line">size-32768(DMA)               0      0  32768      1</div><div class="line">size-32768                    2      2  32768      1</div><div class="line">size-16384(DMA)               0      0  16384      1</div><div class="line">size-16384                    5      5  16384      1</div><div class="line">size-8192(DMA)                0      0   8192      1</div><div class="line">size-8192                     7      7   8192      1</div><div class="line">size-4096(DMA)                0      0   4096      1</div><div class="line">size-4096                   110    111   4096      1</div><div class="line">size-2048(DMA)                0      0   2048      2</div><div class="line">size-2048                   602    602   2048      2</div><div class="line">size-1024(DMA)                0      0   1024      4</div><div class="line">size-1024                   344    352   1024      4</div><div class="line">size-512(DMA)                 0      0    512      8</div><div class="line">size-512                    433    480    512      8</div><div class="line">size-256(DMA)                 0      0    256     15</div><div class="line">size-256                   1139   1155    256     15</div><div class="line">size-128(DMA)                 0      0    128     30</div><div class="line">size-64(DMA)                  0      0     64     59</div><div class="line">size-64                    5639   5782     64     59</div><div class="line">size-32(DMA)                  0      0     32    112</div><div class="line">size-128                    801    930    128     30</div><div class="line">size-32                    3005   3024     32    112</div><div class="line">kmem_cache                  137    137   2688      1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这组信息来自于/proc/slabinfo。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;slab:由于内核会有许多小对象，这些对象构造销毁十分频繁，比如i-node，dentry，这些对象如果每次构建的时候就向内存要一个页(4kb)，而其实只有几个字节，这样就会非常浪费，为了解决这个问题，就引入了一种新的机制来处理在同一个页框中如何分配小存储区，而slab可以对小对象进行分配,这样就不用为每一个对象分配页框，从而节省了空间，内核对一些小对象创建析构很频繁，slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/47. Linux 命令- free/">Linux 命令- free</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中，free命令是最经常使用的命令之一。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free [参数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;free 命令显示系统使用和空闲的内存情况，包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-b 　以Byte为单位显示内存使用情况。 </li>
<li>-k 　以KB为单位显示内存使用情况。 </li>
<li>-m 　以MB为单位显示内存使用情况。</li>
<li>-g   以GB为单位显示内存使用情况。 </li>
<li>-o 　不显示缓冲区调节列。 </li>
<li>-s&lt;间隔秒数&gt; 　持续观察内存使用状况。 </li>
<li>-t 　显示内存总和列。 </li>
<li>-V 　显示版本信息。 </li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示内存使用情况"><a href="#实例1：显示内存使用情况" class="headerlink" title="实例1：显示内存使用情况"></a>实例1：显示内存使用情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">free</div><div class="line">free -g</div><div class="line">free -m</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment"># free</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30841684    2098428          0    4545340   11363424</div><div class="line">-/+ buffers/cache:   14932920   18007192</div><div class="line">Swap:     32764556    1944984   30819572</div><div class="line">[root@SF1150 service]<span class="comment"># free -g</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:            31         29          2          0          4         10</div><div class="line">-/+ buffers/cache:         14         17</div><div class="line">Swap:           31          1         29</div><div class="line">[root@SF1150 service]<span class="comment"># free -m</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:         32168      30119       2048          0       4438      11097</div><div class="line">-/+ buffers/cache:      14583      17584</div><div class="line">Swap:        31996       1899      30097</div></pre></td></tr></table></figure>
<h4 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h4><h5 id="下面是对这些数值的解释："><a href="#下面是对这些数值的解释：" class="headerlink" title="下面是对这些数值的解释："></a>下面是对这些数值的解释：</h5><ul>
<li>total:总计物理内存的大小。</li>
<li>used:已使用多大。</li>
<li>free:可用有多少。</li>
<li>Shared:多个进程共享的内存总额。</li>
<li>Buffers/cached:磁盘缓存的大小。</li>
<li>第三行(-/+ buffers/cached):</li>
<li>used:已使用多大。</li>
<li>free:可用有多少。</li>
<li>第四行是交换分区SWAP的，也就是我们通常所说的虚拟内存。</li>
<li>区别：第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看，第一行是从OS的角度来看，因为对于OS，buffers/cached 都是属于被使用，所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括，内核（OS）使用+Application(X, oracle,etc)使用的+buffers+cached.</li>
<li>第三行所指的是从应用程序角度来看，对于应用程序来说，buffers/cached 是等于可用的，因为buffer/cached是为了提高文件读取的性能，当应用程序需在用到内存的时候，buffer/cached会很快地被回收。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以从应用程序的角度来说，可用内存=系统free memory+buffers+cached。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如本机情况的可用内存为：</p>
<p>18007156=2098428KB+4545340KB+11363424KB</p>
<h5 id="接下来解释什么时候内存会被交换，以及按什么方交换。"><a href="#接下来解释什么时候内存会被交换，以及按什么方交换。" class="headerlink" title="接下来解释什么时候内存会被交换，以及按什么方交换。"></a>接下来解释什么时候内存会被交换，以及按什么方交换。</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当可用内存少于额定值的时候，就会开会进行交换.如何看额定值：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat /proc/meminfo</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment"># cat /proc/meminfo</span></div><div class="line">MemTotal:     32940112 kB</div><div class="line">MemFree:       2096700 kB</div><div class="line">Buffers:       4545340 kB</div><div class="line">Cached:       11364056 kB</div><div class="line">SwapCached:    1896080 kB</div><div class="line">Active:       22739776 kB</div><div class="line">Inactive:      7427836 kB</div><div class="line">HighTotal:           0 kB</div><div class="line">HighFree:            0 kB</div><div class="line">LowTotal:     32940112 kB</div><div class="line">LowFree:       2096700 kB</div><div class="line">SwapTotal:    32764556 kB</div><div class="line">SwapFree:     30819572 kB</div><div class="line">Dirty:             164 kB</div><div class="line">Writeback:           0 kB</div><div class="line">AnonPages:    14153592 kB</div><div class="line">Mapped:          20748 kB</div><div class="line">Slab:           590232 kB</div><div class="line">PageTables:      34200 kB</div><div class="line">NFS_Unstable:        0 kB</div><div class="line">Bounce:              0 kB</div><div class="line">CommitLimit:  49234612 kB</div><div class="line">Committed_AS: 23247544 kB</div><div class="line">VmallocTotal: 34359738367 kB</div><div class="line">VmallocUsed:    278840 kB</div><div class="line">VmallocChunk: 34359459371 kB</div><div class="line">HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;交换将通过三个途径来减少系统中使用的物理页面的个数：　 </p>
<ol>
<li>减少缓冲与页面cache的大小， </li>
<li>将系统V类型的内存页面交换出去，　 </li>
<li>换出或者丢弃页面。(Application 占用的内存页，也就是物理内存不足）。 </li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;事实上，少量地使用swap是不是影响到系统性能的。</p>
<h5 id="那buffers和cached都是缓存，两者有什么区别呢？"><a href="#那buffers和cached都是缓存，两者有什么区别呢？" class="headerlink" title="那buffers和cached都是缓存，两者有什么区别呢？"></a>那buffers和cached都是缓存，两者有什么区别呢？</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式：Buffer Cache和Page Cache。前者针对磁盘块的读写，后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;磁盘的操作有逻辑级（文件系统）和物理级（磁盘块），这两种Cache就是分别缓存逻辑和物理级数据的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Page cache实际上是针对文件系统的，是文件的缓存，在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘，这种映射关系由文件系统来完成。当page cache的数据需要刷新时，page cache中的数据交给buffer cache，因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了，没有真正意义上的cache操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buffer cache是针对磁盘块的缓存，也就是在没有文件系统的情况下，直接对磁盘进行操作的数据会缓存到buffer cache中，例如，文件系统的元数据都会缓存到buffer cache中。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;简单说来，page cache用来缓存文件数据，buffer cache用来缓存磁盘数据。在有文件系统的情况下，对文件操作，那么数据会缓存到page cache，如果直接采用dd等工具对磁盘进行读写，那么数据会缓存到buffer cache。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果是应用服务器的话，一般只看第二行，+buffers/cache,即对应用程序来说free的内存太少了，也是该考虑优化程序或加内存了。</p>
<h3 id="实例2：以总和的形式显示内存的使用信息"><a href="#实例2：以总和的形式显示内存的使用信息" class="headerlink" title="实例2：以总和的形式显示内存的使用信息"></a>实例2：以总和的形式显示内存的使用信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free -t</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment">#  free -t </span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30845024    2095088          0    4545340   11364324</div><div class="line">-/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[root@SF1150 service]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：周期性的查询内存使用信息"><a href="#实例3：周期性的查询内存使用信息" class="headerlink" title="实例3：周期性的查询内存使用信息"></a>实例3：周期性的查询内存使用信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free -s 10</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment">#  free -s 10</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30844528    2095584          0    4545340   11364380</div><div class="line">-/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572</div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30843932    2096180          0    4545340   11364388</div><div class="line">-/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每10s 执行一次命令</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/46. Linux 命令- top/">Linux 命令- top</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;top命令是Linux下常用的性能分析工具，能够实时显示系统中各个进程的资源占用状况，类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序；而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">top [参数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;显示当前系统正在执行的进程的相关信息，包括进程ID、内存占用率、CPU占用率等</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-b 批处理</li>
<li>-c 显示完整的治命令</li>
<li>-I 忽略失效过程</li>
<li>-s 保密模式</li>
<li>-S 累积模式</li>
<li>-i&lt;时间&gt; 设置间隔时间</li>
<li>-u&lt;用户名&gt; 指定用户名</li>
<li>-p&lt;进程号&gt; 指定进程</li>
<li>-n&lt;次数&gt; 循环显示的次数</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示进程信息"><a href="#实例1：显示进程信息" class="headerlink" title="实例1：显示进程信息"></a>实例1：显示进程信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">top</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div></pre></td><td class="code"><pre><div class="line">[root@TG1704 <span class="built_in">log</span>]<span class="comment"># top</span></div><div class="line">top - 14:06:23 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35</div><div class="line">Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie</div><div class="line">Cpu(s):  5.9%us,  3.4%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st</div><div class="line">Mem:  32949016k total, 14411180k used, 18537836k free,   169884k buffers</div><div class="line">Swap: 32764556k total,        0k used, 32764556k free,  3612636k cached</div><div class="line">  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                </div><div class="line">28894 root      22   0 1501m 405m  10m S 52.2  1.3   2534:16 java                                                                   </div><div class="line">18249 root      18   0 3201m 1.9g  11m S 35.9  6.0 569:39.41 java                                                                   </div><div class="line"> 2808 root      25   0 3333m 1.0g  11m S 24.3  3.1 526:51.85 java                                                                   </div><div class="line">25668 root      23   0 3180m 704m  11m S 14.0  2.2 360:44.53 java                                                                   </div><div class="line">  574 root      25   0 3168m 611m  10m S 12.6  1.9 556:59.63 java                                                                   </div><div class="line"> 1599 root      20   0 3237m 1.9g  11m S 12.3  6.2 262:01.14 java                                                                   </div><div class="line"> 1008 root      21   0 3147m 842m  10m S  0.3  2.6   4:31.08 java                                                                   </div><div class="line">13823 root      23   0 3031m 2.1g  10m S  0.3  6.8 176:57.34 java                                                                   </div><div class="line">28218 root      15   0 12760 1168  808 R  0.3  0.0   0:01.43 top                                                                    </div><div class="line">29062 root      20   0 1241m 227m  10m S  0.3  0.7   2:07.32 java                                                                   </div><div class="line">    1 root      15   0 10368  684  572 S  0.0  0.0   1:30.85 init                                                                   </div><div class="line">    2 root      RT  -5     0    0    0 S  0.0  0.0   0:01.01 migration/0                                                            </div><div class="line">    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                            </div><div class="line">    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                             </div><div class="line">    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.80 migration/1                                                            </div><div class="line">    6 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1                                                            </div><div class="line">    7 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/1                                                             </div><div class="line">    8 root      RT  -5     0    0    0 S  0.0  0.0   0:20.59 migration/2                                                            </div><div class="line">    9 root      34  19     0    0    0 S  0.0  0.0   0:00.09 ksoftirqd/2                                                            </div><div class="line">   10 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/2                                                             </div><div class="line">   11 root      RT  -5     0    0    0 S  0.0  0.0   0:23.66 migration/3                                                            </div><div class="line">   12 root      34  19     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/3                                                            </div><div class="line">   13 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/3                                                             </div><div class="line">   14 root      RT  -5     0    0    0 S  0.0  0.0   0:20.29 migration/4                                                            </div><div class="line">   15 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/4                                                            </div><div class="line">   16 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/4                                                             </div><div class="line">   17 root      RT  -5     0    0    0 S  0.0  0.0   0:23.07 migration/5                                                            </div><div class="line">   18 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/5                                                            </div><div class="line">   19 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/5                                                             </div><div class="line">   20 root      RT  -5     0    0    0 S  0.0  0.0   0:17.16 migration/6                                                            </div><div class="line">   21 root      34  19     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/6                                                            </div><div class="line">   22 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/6                                                             </div><div class="line">   23 root      RT  -5     0    0    0 S  0.0  0.0   0:58.28 migration/7</div></pre></td></tr></table></figure>
<h4 id="说明："><a href="#说明：" class="headerlink" title="说明："></a>说明：</h4><h5 id="统计信息区："><a href="#统计信息区：" class="headerlink" title="统计信息区："></a>统计信息区：</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。</p>
<h6 id="第一行，任务队列信息，同-uptime-命令的执行结果，具体参数说明情况如下："><a href="#第一行，任务队列信息，同-uptime-命令的执行结果，具体参数说明情况如下：" class="headerlink" title="第一行，任务队列信息，同 uptime 命令的执行结果，具体参数说明情况如下："></a>第一行，任务队列信息，同 uptime 命令的执行结果，具体参数说明情况如下：</h6><ul>
<li>14:06:23 — 当前系统时间</li>
<li>up 70 days, 16:44 — 系统已经运行了70天16小时44分钟（在这期间系统没有重启过的吆！）</li>
<li>2 users — 当前有2个用户登录系统</li>
<li>load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。</li>
<li>load average数据是每隔5秒钟检查一次活跃的进程数，然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量，结果高于5的时候就表明系统在超负荷运转了。       </li>
</ul>
<h6 id="第二行，Tasks-—-任务（进程），具体信息说明如下："><a href="#第二行，Tasks-—-任务（进程），具体信息说明如下：" class="headerlink" title="第二行，Tasks — 任务（进程），具体信息说明如下："></a>第二行，Tasks — 任务（进程），具体信息说明如下：</h6><ul>
<li>系统现在共有206个进程，其中处于运行中的有1个，205个在休眠（sleep），stoped状态的有0个，zombie状态（僵尸）的有0个。</li>
</ul>
<h6 id="第三行，cpu状态信息，具体属性说明如下："><a href="#第三行，cpu状态信息，具体属性说明如下：" class="headerlink" title="第三行，cpu状态信息，具体属性说明如下："></a>第三行，cpu状态信息，具体属性说明如下：</h6><ul>
<li>5.9%us — 用户空间占用CPU的百分比。      </li>
<li>3.4% sy — 内核空间占用CPU的百分比。      </li>
<li>0.0% ni — 改变过优先级的进程占用CPU的百分比      </li>
<li>90.4% id — 空闲CPU百分比      </li>
<li>0.0% wa — IO等待占用CPU的百分比      </li>
<li>0.0% hi — 硬中断（Hardware IRQ）占用CPU的百分比      </li>
<li>0.2% si — 软中断（Software Interrupts）占用CPU的百分比      </li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>备注：在这里CPU的使用比率和windows概念不同，需要理解linux系统用户空间和内核空间的相关知识！</strong></p>
<h6 id="第四行-内存状态，具体信息如下："><a href="#第四行-内存状态，具体信息如下：" class="headerlink" title="第四行,内存状态，具体信息如下："></a>第四行,内存状态，具体信息如下：</h6><ul>
<li>32949016k total — 物理内存总量（32GB）      </li>
<li>14411180k used — 使用中的内存总量（14GB）      </li>
<li>18537836k free — 空闲内存总量（18GB）      </li>
<li>169884k buffers — 缓存的内存量 （169M）</li>
</ul>
<h6 id="第五行，swap交换分区信息，具体信息说明如下："><a href="#第五行，swap交换分区信息，具体信息说明如下：" class="headerlink" title="第五行，swap交换分区信息，具体信息说明如下："></a>第五行，swap交换分区信息，具体信息说明如下：</h6><ul>
<li>32764556k total — 交换区总量（32GB）            </li>
<li>0k used — 使用的交换区总量（0K）      </li>
<li>32764556k free — 空闲交换区总量（32GB）          </li>
<li>3612636k cached — 缓冲的交换区总量（3.6GB）      </li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>备注</strong>：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第四行中使用中的内存总量（used）指的是现在系统内核控制的内存数，空闲内存总量（free）是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中，还包括过去使用过的现在可以被重复利用的内存，内核并不把这些可被重新使用的内存交还到free中去，因此在linux上free内存会越来越少，但不用为此担心。      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果出于习惯去计算可用内存数，这里有个近似的计算公式：第四行的free + 第四行的buffers + 第五行的cached，按这个公式此台服务器的可用内存：18537836k +169884k +3612636k = 22GB左右。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对于内存监控，在top里我们要时刻监控第五行swap交换分区的used，如果这个数值在不断的变化，说明内核在不断进行内存和swap的数据交换，这是真正的内存不够用了。</p>
<h6 id="第六行，空行。"><a href="#第六行，空行。" class="headerlink" title="第六行，空行。"></a>第六行，空行。</h6><h6 id="第七行以下：各进程（任务）的状态监控，项目列信息说明如下："><a href="#第七行以下：各进程（任务）的状态监控，项目列信息说明如下：" class="headerlink" title="第七行以下：各进程（任务）的状态监控，项目列信息说明如下："></a>第七行以下：各进程（任务）的状态监控，项目列信息说明如下：</h6><ul>
<li>PID — 进程id      </li>
<li>USER — 进程所有者             </li>
<li>PR — 进程优先级        </li>
<li>NI — nice值。负值表示高优先级，正值表示低优先级       </li>
<li>VIRT — 进程使用的虚拟内存总量，单位kb。VIRT=SWAP+RES          </li>
<li>RES — 进程使用的、未被换出的物理内存大小，单位kb。RES=CODE+DATA          </li>
<li>SHR — 共享内存大小，单位kb      </li>
<li>S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程      </li>
<li>%CPU — 上次更新到现在的CPU时间占用百分比      </li>
<li>%MEM — 进程使用的物理内存百分比      </li>
<li>TIME+ — 进程使用的CPU时间总计，单位1/100秒      </li>
<li>COMMAND — 进程名称（命令名/命令行）</li>
</ul>
<h5 id="其他使用技巧："><a href="#其他使用技巧：" class="headerlink" title="其他使用技巧："></a>其他使用技巧：</h5><h6 id="1-多U多核CPU监控"><a href="#1-多U多核CPU监控" class="headerlink" title="1.多U多核CPU监控"></a>1.多U多核CPU监控</h6><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在top基本视图中，按键盘数字“1”，可监控每个逻辑CPU的状况：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/01.jpg?raw=true" alt=""></figure>     </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;观察上图，服务器有16个逻辑CPU，实际上是4个物理CPU。再按数字键1，就会返回到top基本视图界面。</p>
<h6 id="2-高亮显示当前运行进程"><a href="#2-高亮显示当前运行进程" class="headerlink" title="2.高亮显示当前运行进程"></a>2.高亮显示当前运行进程</h6><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;敲击键盘“b”（打开/关闭加亮效果），top的视图变化如下：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/02.png?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;发现进程id为2570的“top”进程被加亮了，top进程就是视图第二行显示的唯一的运行态（runing）的那个进程，可以通过敲击“y”键关闭或打开运行态进程的加亮效果。</p>
<h6 id="3-进程字段排序"><a href="#3-进程字段排序" class="headerlink" title="3.进程字段排序"></a>3.进程字段排序</h6><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;默认进入top时，各进程是按照CPU的占用量来排序的，在下图中进程ID为28894的java进程排在第一（cpu占用142%），进程ID为574的java进程排在第二（cpu占用16%）。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/03.png?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;敲击键盘“x”（打开/关闭排序列的加亮效果），top的视图变化如下：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/04.png?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以看到，top默认的排序列是“%CPU”。</p>
<h6 id="4-通过”shift-gt-”或”shift-lt-”可以向右或左改变排序列"><a href="#4-通过”shift-gt-”或”shift-lt-”可以向右或左改变排序列" class="headerlink" title="4. 通过”shift + &gt;”或”shift + &lt;”可以向右或左改变排序列"></a>4. 通过”shift + &gt;”或”shift + &lt;”可以向右或左改变排序列</h6><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下图是按一次”shift + &gt;”的效果图,视图现在已经按照%MEM来排序。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/05.png?raw=true" alt=""></figure></p>
<h3 id="实例2：显示-完整命令"><a href="#实例2：显示-完整命令" class="headerlink" title="实例2：显示 完整命令"></a>实例2：显示 完整命令</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">top -c</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/06.png?raw=true" alt=""></figure></p>
<h3 id="实例3：显示指定的进程信息"><a href="#实例3：显示指定的进程信息" class="headerlink" title="实例3：显示指定的进程信息"></a>实例3：显示指定的进程信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">top -p 574</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-top/07.png?raw=true" alt=""></figure></p>
<h2 id="5-top交互命令"><a href="#5-top交互命令" class="headerlink" title="5.top交互命令"></a>5.top交互命令</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的，如果在命令行中使用了s 选项， 其中一些命令可能会被屏蔽。</p>
<ul>
<li>h 显示帮助画面，给出一些简短的命令总结说明</li>
<li>k 终止一个进程。</li>
<li>i 忽略闲置和僵死进程。这是一个开关式命令。</li>
<li>q 退出程序</li>
<li>r 重新安排一个进程的优先级别</li>
<li>S 切换到累计模式</li>
<li>s 改变两次刷新之间的延迟时间（单位为s），如果有小数，就换算成m s。输入0值则系统将不断刷新，默认值是5 s</li>
<li>f或者F 从当前显示中添加或者删除项目</li>
<li>o或者O 改变显示项目的顺序</li>
<li>l 切换显示平均负载和启动时间信息</li>
<li>m 切换显示内存信息</li>
<li>t 切换显示进程和CPU状态信息</li>
<li>c 切换显示命令名称和完整命令行</li>
<li>M 根据驻留内存大小进行排序</li>
<li>P 根据CPU使用百分比大小进行排序</li>
<li>T 根据时间/累计时间进行排序</li>
<li>W 将当前设置写入~/.toprc文件中 </li>
</ul>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/45. Linux 命令- killall/">Linux 命令- killall</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统中的killall命令用于杀死指定名字的进程（kill processes by name）。我们可以使用kill命令杀死指定进程PID的进程，如果要找到我们需要杀死的进程，我们还需要在之前使用ps等命令再配合grep来查找进程，而killall把这两个过程合二为一，是一个很好用的命令。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">killall [参数] [进程名]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用来结束同名的的所有进程</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-Z 只杀死拥有scontext 的进程</li>
<li>-e 要求匹配进程名称</li>
<li>-I 忽略小写</li>
<li>-g 杀死进程组而不是进程</li>
<li>-i 交互模式，杀死进程前先询问用户</li>
<li>-l 列出所有的已知信号名称</li>
<li>-q 不输出警告信息</li>
<li>-s 发送指定的信号</li>
<li>-v 报告信号是否成功发送</li>
<li>-w 等待进程死亡</li>
<li>–help 显示帮助信息</li>
<li>–version 显示版本显示</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：杀死所有同名进程"><a href="#实例1：杀死所有同名进程" class="headerlink" title="实例1：杀死所有同名进程"></a>实例1：杀死所有同名进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">killall vi</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt</div><div class="line">root     17611 17582  0 17:51 pts/1    00:00:00 grep vi</div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt</div><div class="line">root     17640 17612  0 17:51 pts/2    00:00:00 vi test.log</div><div class="line">root     17642 17582  0 17:51 pts/1    00:00:00 grep vi</div><div class="line">[root@localhost ~]<span class="comment"># killall vi</span></div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17645 17582  0 17:52 pts/1    00:00:00 grep vi</div></pre></td></tr></table></figure>
<h3 id="实例2：向进程发送指定信号"><a href="#实例2：向进程发送指定信号" class="headerlink" title="实例2：向进程发送指定信号"></a>实例2：向进程发送指定信号</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;后台运行程序：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vi &amp;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;杀死 vi进程：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">killall -TERM vi</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;或者</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">killall -KILL vi</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vi &amp; </span></div><div class="line">[1] 17646[root@localhost ~]<span class="comment"># killall -TERM vi</span></div><div class="line">[1]+  Stopped                 vi</div><div class="line">[root@localhost ~]<span class="comment"># vi &amp; </span></div><div class="line">[2] 17648[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17646 17582  0 17:54 pts/1    00:00:00 vi</div><div class="line">root     17648 17582  0 17:54 pts/1    00:00:00 vi</div><div class="line">root     17650 17582  0 17:55 pts/1    00:00:00 grep vi</div><div class="line">[2]+  Stopped                 vi</div><div class="line">[root@localhost ~]<span class="comment"># killall -TERM vi</span></div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17646 17582  0 17:54 pts/1    00:00:00 vi</div><div class="line">root     17648 17582  0 17:54 pts/1    00:00:00 vi</div><div class="line">root     17653 17582  0 17:55 pts/1    00:00:00 grep vi</div><div class="line">[root@localhost ~]<span class="comment"># killall -KILL vi</span></div><div class="line">[1]-  已杀死               vi</div><div class="line">[2]+  已杀死               vi</div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep vi</span></div><div class="line">root     17656 17582  0 17:56 pts/1    00:00:00 grep vi</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：把所有的登录后的shell给杀掉"><a href="#实例3：把所有的登录后的shell给杀掉" class="headerlink" title="实例3：把所有的登录后的shell给杀掉"></a>实例3：把所有的登录后的shell给杀掉</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">killall -9 bash</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># w</span></div><div class="line"> 18:01:03 up 41 days, 18:53,  3 users,  load average: 0.00, 0.00, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT</div><div class="line">root     pts/0    10.2.0.68        14:58    9:52   0.10s  0.10s -bash</div><div class="line">root     pts/1    10.2.0.68        17:51    0.00s  0.02s  0.00s w</div><div class="line">root     pts/2    10.2.0.68        17:51    9:24   0.01s  0.01s -bash</div><div class="line">[root@localhost ~]<span class="comment"># killall -9 bash</span></div><div class="line">[root@localhost ~]<span class="comment"># w</span></div><div class="line"> 18:01:48 up 41 days, 18:54,  1 user,  load average: 0.07, 0.02, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT</div><div class="line">root     pts/0    10.2.0.68        18:01    0.00s  0.01s  0.00s w</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;运行命令：killall -9 bash 后，所有bash都会被卡掉了，所以当前所有连接丢失了。需要重新连接并登录。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/44. Linux 命令- kill/">Linux 命令- kill</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux中的kill命令用来终止指定的进程（terminate a process）的运行，是Linux下进程管理的常用命令。通常，终止一个前台进程可以使用Ctrl+C键，但是，对于一个后台进程就须用kill命令来终止，我们就需要先使用ps/pidof/pstree/top等工具获取进程PID，然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下，采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号，强行“杀掉”该进程。 </p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span>[参数][进程号]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;发送指定的信号到相应进程。不指定型号将发送SIGTERM（15）终止指定进程。如果任无法终止该程序可用“-KILL” 参数，其发送的信号为SIGKILL(9) ，将强制结束进程，使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程，非root用户只能影响自己的进程。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-l  信号，若果不加信号的编号参数，则使用“-l”参数会列出全部的信号名称</li>
<li>-a  当处理当前进程时，不限制命令名和进程号的对应关系</li>
<li>-p  指定kill 命令只打印相关进程的进程号，而不发送任何信号</li>
<li>-s  指定发送信号</li>
<li>-u  指定用户 </li>
</ul>
<h3 id="注意："><a href="#注意：" class="headerlink" title="注意："></a>注意：</h3><ol>
<li><p>kill命令可以带信号号码选项，也可以不带。如果没有信号号码，kill命令就会发出终止信号(15)，这个信号可以被进程捕获，使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如：<br>kill -2 123<br>它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是，普通用户只能使用不带signal参数的kill命令或最多使用-9信号。</p>
</li>
<li><p>kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时，必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程，就会得到一个错误信息。</p>
</li>
<li><p>可以向多个进程发信号或终止它们。</p>
</li>
<li><p>当kill成功地发送了信号后，shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示，只有当按下Enter键使shell的命令提示符再次出现时，才会显示出来。</p>
</li>
<li><p>应注意，信号使进程强行终止，这常会带来一些副作用，如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心，只有在万不得已时，才用kill信号(9)，因为进程不能首先捕获它。要撤销所有的后台作业，可以输入kill 0。因为有些在后台运行的命令会启动多个进程，跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时，使用kill 0来终止所有由当前shell启动的进程，是个有效的方法。</p>
</li>
</ol>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：列出所有信号名称"><a href="#实例1：列出所有信号名称" class="headerlink" title="实例1：列出所有信号名称"></a>实例1：列出所有信号名称</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> -l</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># kill -l</span></div><div class="line"> 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL</div><div class="line"> 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE</div><div class="line"> 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2</div><div class="line">13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT</div><div class="line">17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP</div><div class="line">21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU</div><div class="line">25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH</div><div class="line">29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN</div><div class="line">35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4</div><div class="line">39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8</div><div class="line">43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12</div><div class="line">47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14</div><div class="line">51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10</div><div class="line">55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6</div><div class="line">59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2</div><div class="line">63) SIGRTMAX-1  64) SIGRTMAX</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;只有第9种信号(SIGKILL)才可以无条件终止进程，其他信号进程都有权利忽略。    下面是常用的信号：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">HUP    1    终端断线</div><div class="line">INT     2    中断（同 Ctrl + C）</div><div class="line">QUIT    3    退出（同 Ctrl + \）</div><div class="line">TERM   15    终止</div><div class="line">KILL    9    强制终止</div><div class="line">CONT   18    继续（与STOP相反， <span class="built_in">fg</span>/<span class="built_in">bg</span>命令）</div><div class="line">STOP    19    暂停（同 Ctrl + Z）</div></pre></td></tr></table></figure>
<h3 id="实例2：得到指定信号的数值"><a href="#实例2：得到指定信号的数值" class="headerlink" title="实例2：得到指定信号的数值"></a>实例2：得到指定信号的数值</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># kill -l KILL</span></div><div class="line">9[root@localhost test6]<span class="comment"># kill -l SIGKILL</span></div><div class="line">9[root@localhost test6]<span class="comment"># kill -l TERM</span></div><div class="line">15[root@localhost test6]<span class="comment"># kill -l SIGTERM</span></div><div class="line">15[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：先用ps查找进程，然后用kill杀掉"><a href="#实例3：先用ps查找进程，然后用kill杀掉" class="headerlink" title="实例3：先用ps查找进程，然后用kill杀掉"></a>实例3：先用ps查找进程，然后用kill杀掉</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> 3268</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -ef|grep vim </span></div><div class="line">root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log</div><div class="line">root      3370  2822  0 16:21 pts/0    00:00:00 grep vim</div><div class="line">[root@localhost test6]<span class="comment"># kill 3268 </span></div><div class="line">[root@localhost test6]<span class="comment"># kill 3268 </span></div><div class="line">-bash: <span class="built_in">kill</span>: (3268) - 没有那个进程</div><div class="line">[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例4：彻底杀死进程"><a href="#实例4：彻底杀死进程" class="headerlink" title="实例4：彻底杀死进程"></a>实例4：彻底杀死进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> –9 3268</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -ef|grep vim </span></div><div class="line">root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log</div><div class="line">root      3370  2822  0 16:21 pts/0    00:00:00 grep vim</div><div class="line">[root@localhost test6]<span class="comment"># kill –9 3268 </span></div><div class="line">[root@localhost test6]<span class="comment"># kill 3268 </span></div><div class="line">-bash: <span class="built_in">kill</span>: (3268) - 没有那个进程</div><div class="line">[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：杀死指定用户所有进程"><a href="#实例5：杀死指定用户所有进程" class="headerlink" title="实例5：杀死指定用户所有进程"></a>实例5：杀死指定用户所有进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> -9 $(ps -ef | grep peidalinux)</div><div class="line"><span class="built_in">kill</span> -u peidalinux</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># kill -9 $(ps -ef | grep peidalinux) </span></div><div class="line">[root@localhost ~]<span class="comment"># kill -u peidalinux</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;方法一，过滤出hnlinux用户进程并杀死</p>
<h3 id="实例6：init进程是不可杀的"><a href="#实例6：init进程是不可杀的" class="headerlink" title="实例6：init进程是不可杀的"></a>实例6：init进程是不可杀的</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> -9 1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep init</span></div><div class="line">root         1     0  0 Nov02 ?        00:00:00 init [3]                  </div><div class="line">root     17563 17534  0 17:37 pts/1    00:00:00 grep init</div><div class="line">[root@localhost ~]<span class="comment"># kill -9 1</span></div><div class="line">[root@localhost ~]<span class="comment"># kill -HUP 1</span></div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep init</span></div><div class="line">root         1     0  0 Nov02 ?        00:00:00 init [3]                  </div><div class="line">root     17565 17534  0 17:38 pts/1    00:00:00 grep init</div><div class="line">[root@localhost ~]<span class="comment"># kill -KILL 1</span></div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep init</span></div><div class="line">root         1     0  0 Nov02 ?        00:00:00 init [3]                  </div><div class="line">root     17567 17534  0 17:38 pts/1    00:00:00 grep init</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;init是Linux系统操作中不可缺少的程序之一。所谓的init进程，它是一个由内核启动的用户级进程。内核自行启动（已经被载入内存，开始运行，并已初始化所有的设备驱动程序和数据结构等）之后，就通过启动一个用户级程序init的方式，完成引导进程。所以,init始终是第一个进程（其进程编号始终为1）。 其它所有进程都是init进程的子孙。init进程是不可杀的！</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/43. Linux 命令- ps/">Linux 命令- ps</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照，就是执行ps命令的那个时刻的那些进程，如果想要动态的显示进程信息，就可以使用top命令。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要对进程进行监测和控制，首先必须要了解当前进程的情况，也就是需要查看当前进程，而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ps 为我们提供了进程的一次性的查看，它所提供的查看结果并不动态连续的；如果想对进程时间监控，应该用 top 工具。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;kill 命令用于杀死进程。</p>
<ul>
<li><p><strong>inux上进程有5种状态:</strong> </p>
<ul>
<li>运行(正在运行或在运行队列中等待) </li>
<li>中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) </li>
<li>不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) </li>
<li>僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) </li>
<li>停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) </li>
</ul>
</li>
<li><p><strong>ps工具标识进程的5种状态码:</strong> </p>
<ul>
<li>D 不可中断 uninterruptible sleep (usually IO) </li>
<li>R 运行 runnable (on run queue) </li>
<li>S 中断 sleeping </li>
<li>T 停止 traced or stopped </li>
<li>Z 僵死 a defunct (”zombie”) process </li>
</ul>
</li>
</ul>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps[参数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用来显示当前进程的状态</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>a  显示所有进程</li>
<li>-a 显示同一终端下的所有程序</li>
<li>-A 显示所有进程</li>
<li>c  显示进程的真实名称</li>
<li>-N 反向选择</li>
<li>-e 等于“-A”</li>
<li>e  显示环境变量</li>
<li>f  显示程序间的关系</li>
<li>-H 显示树状结构</li>
<li>r  显示当前终端的进程</li>
<li>T  显示当前终端的所有程序</li>
<li>u  指定用户的所有进程</li>
<li>-au 显示较详细的资讯</li>
<li>-aux 显示所有包含其他使用者的行程 </li>
<li>-C&lt;命令&gt; 列出指定命令的状况</li>
<li>–lines&lt;行数&gt; 每页显示的行数</li>
<li>–width&lt;字符数&gt; 每页显示的字符数</li>
<li>–help 显示帮助信息</li>
<li>–version 显示版本显示</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示所有进程信息"><a href="#实例1：显示所有进程信息" class="headerlink" title="实例1：显示所有进程信息"></a>实例1：显示所有进程信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -A</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -A</span></div><div class="line">  PID TTY          TIME CMD</div><div class="line">    1 ?        00:00:00 init</div><div class="line">    2 ?        00:00:01 migration/0</div><div class="line">    3 ?        00:00:00 ksoftirqd/0</div><div class="line">    4 ?        00:00:01 migration/1</div><div class="line">    5 ?        00:00:00 ksoftirqd/1</div><div class="line">    6 ?        00:29:57 events/0</div><div class="line">    7 ?        00:00:00 events/1</div><div class="line">    8 ?        00:00:00 khelper</div><div class="line">   49 ?        00:00:00 kthread</div><div class="line">   54 ?        00:00:00 kblockd/0</div><div class="line">   55 ?        00:00:00 kblockd/1</div><div class="line">   56 ?        00:00:00 kacpid</div><div class="line">  217 ?        00:00:00 cqueue/0</div><div class="line">  ……省略部分结果</div></pre></td></tr></table></figure>
<h3 id="实例2：显示指定用户信息"><a href="#实例2：显示指定用户信息" class="headerlink" title="实例2：显示指定用户信息"></a>实例2：显示指定用户信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -u root</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -u root</span></div><div class="line">  PID TTY          TIME CMD</div><div class="line">    1 ?        00:00:00 init</div><div class="line">    2 ?        00:00:01 migration/0</div><div class="line">    3 ?        00:00:00 ksoftirqd/0</div><div class="line">    4 ?        00:00:01 migration/1</div><div class="line">    5 ?        00:00:00 ksoftirqd/1</div><div class="line">    6 ?        00:29:57 events/0</div><div class="line">    7 ?        00:00:00 events/1</div><div class="line">    8 ?        00:00:00 khelper</div><div class="line">   49 ?        00:00:00 kthread</div><div class="line">   54 ?        00:00:00 kblockd/0</div><div class="line">   55 ?        00:00:00 kblockd/1</div><div class="line">   56 ?        00:00:00 kacpid</div><div class="line">    ……省略部分结果</div></pre></td></tr></table></figure>
<h3 id="实例3：显示所有进程信息，连同命令行"><a href="#实例3：显示所有进程信息，连同命令行" class="headerlink" title="实例3：显示所有进程信息，连同命令行"></a>实例3：显示所有进程信息，连同命令行</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -ef</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -ef</span></div><div class="line">UID        PID  PPID  C STIME TTY          TIME CMD</div><div class="line">root         1     0  0 Nov02 ?        00:00:00 init [3]                  </div><div class="line">root         2     1  0 Nov02 ?        00:00:01 [migration/0]</div><div class="line">root         3     1  0 Nov02 ?        00:00:00 [ksoftirqd/0]</div><div class="line">root         4     1  0 Nov02 ?        00:00:01 [migration/1]</div><div class="line">root         5     1  0 Nov02 ?        00:00:00 [ksoftirqd/1]</div><div class="line">root         6     1  0 Nov02 ?        00:29:57 [events/0]</div><div class="line">root         7     1  0 Nov02 ?        00:00:00 [events/1]</div><div class="line">root         8     1  0 Nov02 ?        00:00:00 [khelper]</div><div class="line">root        49     1  0 Nov02 ?        00:00:00 [kthread]</div><div class="line">root        54    49  0 Nov02 ?        00:00:00 [kblockd/0]</div><div class="line">root        55    49  0 Nov02 ?        00:00:00 [kblockd/1]</div><div class="line">root        56    49  0 Nov02 ?        00:00:00 [kacpid]</div><div class="line">……省略部分结果</div></pre></td></tr></table></figure>
<h3 id="实例4：-ps-与grep-常用组合用法，查找特定进程"><a href="#实例4：-ps-与grep-常用组合用法，查找特定进程" class="headerlink" title="实例4： ps 与grep 常用组合用法，查找特定进程"></a>实例4： ps 与grep 常用组合用法，查找特定进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -ef|grep ssh</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -ef|grep ssh</span></div><div class="line">root      2720     1  0 Nov02 ?        00:00:00 /usr/sbin/sshd</div><div class="line">root     17394  2720  0 14:58 ?        00:00:00 sshd: root@pts/0 </div><div class="line">root     17465 17398  0 15:57 pts/0    00:00:00 grep ssh</div></pre></td></tr></table></figure>
<h3 id="实例5：将目前属于您自己这次登入的-PID-与相关信息列示出来"><a href="#实例5：将目前属于您自己这次登入的-PID-与相关信息列示出来" class="headerlink" title="实例5：将目前属于您自己这次登入的 PID 与相关信息列示出来"></a>实例5：将目前属于您自己这次登入的 PID 与相关信息列示出来</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -l</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -l</span></div><div class="line">F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD</div><div class="line">4 S     0 17398 17394  0  75   0 - 16543 <span class="built_in">wait</span>   pts/0    00:00:00 bash</div><div class="line">4 R     0 17469 17398  0  77   0 - 15877 -      pts/0    00:00:00 ps</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong> </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;各相关信息的意义：</p>
<ul>
<li><p>F 代表这个程序的旗标 (flag)， 4 代表使用者为 super user</p>
</li>
<li><p>S 代表这个程序的状态 (STAT)，关于各 STAT 的意义将在内文介绍</p>
</li>
<li><p>UID 程序被该 UID 所拥有</p>
</li>
<li><p>PID 就是这个程序的 ID ！</p>
</li>
<li><p>PPID 则是其上级父程序的ID</p>
</li>
<li><p>C CPU 使用的资源百分比</p>
</li>
<li><p>PRI 这个是 Priority (优先执行序) 的缩写</p>
</li>
<li><p>NI 这个是 Nice 值，在下一小节我们会持续介绍</p>
</li>
<li><p>ADDR 这个是 kernel function，指出该程序在内存的那个部分。如果是个 running的程序，一般就是 “-“</p>
</li>
<li><p>SZ 使用掉的内存大小</p>
</li>
<li><p>WCHAN 目前这个程序是否正在运作当中，若为 - 表示正在运作</p>
</li>
<li><p>TTY 登入者的终端机位置</p>
</li>
<li><p>TIME 使用掉的 CPU 时间。</p>
</li>
<li><p>CMD 所下达的指令为何</p>
</li>
<li><p>在预设的情况下， ps 仅会列出与目前所在的 bash shell 有关的 PID 而已，所以， 当我使用 ps -l 的时候，只有三个 PID。</p>
</li>
</ul>
<h3 id="实例6：列出目前所有的正在内存当中的程序"><a href="#实例6：列出目前所有的正在内存当中的程序" class="headerlink" title="实例6：列出目前所有的正在内存当中的程序"></a>实例6：列出目前所有的正在内存当中的程序</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps aux</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps aux</span></div><div class="line">USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND</div><div class="line">root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]                  </div><div class="line">root         2  0.0  0.0      0     0 ?        S&lt;   Nov02   0:01 [migration/0]</div><div class="line">root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]</div><div class="line">root         4  0.0  0.0      0     0 ?        S&lt;   Nov02   0:01 [migration/1]</div><div class="line">root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]</div><div class="line">root         6  0.0  0.0      0     0 ?        S&lt;   Nov02  29:57 [events/0]</div><div class="line">root         7  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [events/1]</div><div class="line">root         8  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [khelper]</div><div class="line">root        49  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [kthread]</div><div class="line">root        54  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [kblockd/0]</div><div class="line">root        55  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [kblockd/1]</div><div class="line">root        56  0.0  0.0      0     0 ?        S&lt;   Nov02   0:00 [kacpid]</div><div class="line">……省略部分结果</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<ul>
<li><p>USER：该 process 属于那个使用者账号的</p>
</li>
<li><p>PID ：该 process 的号码</p>
</li>
<li><p>%CPU：该 process 使用掉的 CPU 资源百分比</p>
</li>
<li><p>%MEM：该 process 所占用的物理内存百分比</p>
</li>
<li><p>VSZ ：该 process 使用掉的虚拟内存量 (Kbytes)</p>
</li>
<li><p>RSS ：该 process 占用的固定的内存量 (Kbytes)</p>
</li>
<li><p>TTY ：该 process 是在那个终端机上面运作，若与终端机无关，则显示 ?，另外， tty1-tty6 是本机上面的登入者程序，若为 pts/0 等等的，则表示为由网络连接进主机的程序。</p>
</li>
<li><p>STAT：该程序目前的状态，主要的状态有</p>
</li>
<li><p>R ：该程序目前正在运作，或者是可被运作</p>
</li>
<li><p>S ：该程序目前正在睡眠当中 (可说是 idle 状态)，但可被某些讯号 (signal) 唤醒。</p>
</li>
<li><p>T ：该程序目前正在侦测或者是停止了</p>
</li>
<li><p>Z ：该程序应该已经终止，但是其父程序却无法正常的终止他，造成 zombie (疆尸) 程序的状态</p>
</li>
<li><p>START：该 process 被触发启动的时间</p>
</li>
<li><p>TIME ：该 process 实际使用 CPU 运作的时间</p>
</li>
<li><p>COMMAND：该程序的实际指令</p>
</li>
</ul>
<h3 id="实例7：列出类似程序树的程序显示"><a href="#实例7：列出类似程序树的程序显示" class="headerlink" title="实例7：列出类似程序树的程序显示"></a>实例7：列出类似程序树的程序显示</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -axjf</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>*输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -axjf</span></div><div class="line">Warning: bad syntax, perhaps a bogus <span class="string">'-'</span>? See /usr/share/doc/procps-3.2.7/FAQ</div><div class="line"> PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND</div><div class="line">    0     1     1     1 ?           -1 Ss       0   0:00 init [3]                  </div><div class="line">    1     2     1     1 ?           -1 S&lt;       0   0:01 [migration/0]</div><div class="line">    1     3     1     1 ?           -1 SN       0   0:00 [ksoftirqd/0]</div><div class="line">    1     4     1     1 ?           -1 S&lt;       0   0:01 [migration/1]</div><div class="line">    1     5     1     1 ?           -1 SN       0   0:00 [ksoftirqd/1]</div><div class="line">    1     6     1     1 ?           -1 S&lt;       0  29:58 [events/0]</div><div class="line">    1     7     1     1 ?           -1 S&lt;       0   0:00 [events/1]</div><div class="line">    1     8     1     1 ?           -1 S&lt;       0   0:00 [khelper]</div><div class="line">    1    49     1     1 ?           -1 S&lt;       0   0:00 [kthread]</div><div class="line">   49    54     1     1 ?           -1 S&lt;       0   0:00  \_ [kblockd/0]</div><div class="line">   49    55     1     1 ?           -1 S&lt;       0   0:00  \_ [kblockd/1]</div><div class="line">   49    56     1     1 ?           -1 S&lt;       0   0:00  \_ [kacpid]</div></pre></td></tr></table></figure>
<h3 id="实例8：找出与-cron-与-syslog-这两个服务有关的-PID-号码"><a href="#实例8：找出与-cron-与-syslog-这两个服务有关的-PID-号码" class="headerlink" title="实例8：找出与 cron 与 syslog 这两个服务有关的 PID 号码"></a>实例8：找出与 cron 与 syslog 这两个服务有关的 PID 号码</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">pa aux|egrep <span class="string">'(cron|syslog)'</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps aux | egrep '(cron|syslog)'</span></div><div class="line">root      2682  0.0  0.0  83384  2000 ?        Sl   Nov02   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5</div><div class="line">root      2735  0.0  0.0  74812  1140 ?        Ss   Nov02   0:00 crond</div><div class="line">root     17475  0.0  0.0  61180   832 pts/0    S+   16:27   0:00 egrep (cron|syslog)</div><div class="line">[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="其他实例："><a href="#其他实例：" class="headerlink" title="其他实例："></a>其他实例：</h3><h4 id="1-可以用-管道和-more-连接起来分页查看"><a href="#1-可以用-管道和-more-连接起来分页查看" class="headerlink" title="1. 可以用 | 管道和 more 连接起来分页查看"></a>1. 可以用 | 管道和 more 连接起来分页查看</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -aux |more</div></pre></td></tr></table></figure>
<h4 id="2-把所有进程显示出来，并输出到ps001-txt文件"><a href="#2-把所有进程显示出来，并输出到ps001-txt文件" class="headerlink" title="2. 把所有进程显示出来，并输出到ps001.txt文件"></a>2. 把所有进程显示出来，并输出到ps001.txt文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -aux &gt; ps001.txt</div></pre></td></tr></table></figure>
<h4 id="3-输出指定的字段"><a href="#3-输出指定的字段" class="headerlink" title="3. 输出指定的字段"></a>3. 输出指定的字段</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -o pid,ppid,pgrp,session,tpgid,comm</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost test6]<span class="comment"># ps -o pid,ppid,pgrp,session,tpgid,comm</span></div><div class="line">  PID  PPID  PGRP  SESS TPGID COMMAND</div><div class="line">17398 17394 17398 17398 17478 bash</div><div class="line">17478 17398 17478 17398 17478 ps</div><div class="line">[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/42. Linux 命令- wc/">Linux 命令- wc</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数，并将统计结果显示输出。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">wc [选项]文件...</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;统计指定文件中的字节数、字数、行数，并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名，则从标准输入读取。wc同时也给出所指定文件的总统计数。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-c 统计字节数。</li>
<li>-l 统计行数。</li>
<li>-m 统计字符数。这个标志不能与 -c 标志一起使用。</li>
<li>-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。</li>
<li>-L 打印最长行的长度。</li>
<li>-help 显示帮助信息</li>
<li>–version 显示版本信息</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：查看文件的字节数、字数、行数"><a href="#实例1：查看文件的字节数、字数、行数" class="headerlink" title="实例1：查看文件的字节数、字数、行数"></a>实例1：查看文件的字节数、字数、行数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">wc test.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt </span></div><div class="line">hnlinux</div><div class="line">peida.cnblogs.com</div><div class="line">ubuntu</div><div class="line">ubuntu linux</div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc test.txt</span></div><div class="line"> 7  8 70 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -l test.txt </span></div><div class="line">7 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -c test.txt </span></div><div class="line">70 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -w test.txt </span></div><div class="line">8 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -m test.txt </span></div><div class="line">70 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -L test.txt </span></div><div class="line">17 test.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;8&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;70&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;test.txt</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;行数 单词数 字节数 文件名</p>
<h3 id="实例2：用wc命令怎么做到只打印统计数字不打印文件名"><a href="#实例2：用wc命令怎么做到只打印统计数字不打印文件名" class="headerlink" title="实例2：用wc命令怎么做到只打印统计数字不打印文件名"></a>实例2：用wc命令怎么做到只打印统计数字不打印文件名</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">wc -l test.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># wc -l test.txt </span></div><div class="line">7 test.txt</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |wc -l</span></div><div class="line">7[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用管道线，这在编写shell脚本时特别有用。</p>
<h3 id="实例3：用来统计当前目录下的文件数"><a href="#实例3：用来统计当前目录下的文件数" class="headerlink" title="实例3：用来统计当前目录下的文件数"></a>实例3：用来统计当前目录下的文件数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ls -l | wc -l</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cd test6</span></div><div class="line">[root@localhost test6]<span class="comment"># ll</span></div><div class="line">总计 604</div><div class="line">---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log</div><div class="line">---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log</div><div class="line">-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log</div><div class="line">-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log</div><div class="line">-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log</div><div class="line">-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log</div><div class="line">-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log</div><div class="line">[root@localhost test6]<span class="comment"># ls -l | wc -l</span></div><div class="line">8</div><div class="line">[root@localhost test6]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;数量中包含当前目录</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/41. Linux 命令- grep/">Linux 命令- grep</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统中grep命令是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹 配的行打印出来。grep全称是Global Regular Expression Print，表示全局正则表达式版本，它的使用权限是所有用户。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;grep的工作方式是这样的，它在一个或多个文件中搜索字符串模板。如果模板包括空格，则必须被引用，模板后的所有字符串被看作文件名。搜索的结果被送到标准输出，不影响原文件内容。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;grep可用于shell脚本，因为grep通过返回一个状态值来说明搜索的状态，如果模板搜索成功，则返回0，如果搜索不成功，则返回1，如果搜索的文件不存在，则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">grep [option] pattern file</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用，使用上十分灵活。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-a   –text   #不要忽略二进制的数据。</li>
<li>-A&lt;显示行数&gt;   –after-context=&lt;显示行数&gt;   #除了显示符合范本样式的那一列之外，并显示该行之后的内容。</li>
<li>-b   –byte-offset   #在显示符合样式的那一行之前，标示出该行第一个字符的编号。</li>
<li>-B&lt;显示行数&gt;   –before-context=&lt;显示行数&gt;   #除了显示符合样式的那一行之外，并显示该行之前的内容。</li>
<li>-c    –count   #计算符合样式的列数。</li>
<li>-C&lt;显示行数&gt;    –context=&lt;显示行数&gt;或-&lt;显示行数&gt;   #除了显示符合样式的那一行之外，并显示该行之前后的内容。</li>
<li>-d &lt;动作&gt;      –directories=&lt;动作&gt;   #当指定要查找的是目录而非文件时，必须使用这项参数，否则grep指令将回报信息并停止动作。</li>
<li>-e&lt;范本样式&gt;  –regexp=&lt;范本样式&gt;   #指定字符串做为查找文件内容的样式。 </li>
<li>-E      –extended-regexp   #将样式为延伸的普通表示法来使用。   </li>
<li>-f&lt;规则文件&gt;  –file=&lt;规则文件&gt;   #指定规则文件，其内容含有一个或多个规则样式，让grep查找符合规则条件的文件内容，格式为每行一个规则样式。   </li>
<li>-F   –fixed-regexp   #将样式视为固定字符串的列表。</li>
<li>-G   –basic-regexp   #将样式视为普通的表示法来使用。</li>
<li>-h   –no-filename   #在显示符合样式的那一行之前，不标示该行所属的文件名称。</li>
<li>-H   –with-filename   #在显示符合样式的那一行之前，表示该行所属的文件名称。</li>
<li>-i    –ignore-case   #忽略字符大小写的差别。</li>
<li>-l    –file-with-matches   #列出文件内容符合指定的样式的文件名称。</li>
<li>-L   –files-without-match   #列出文件内容不符合指定的样式的文件名称。</li>
<li>-n   –line-number   #在显示符合样式的那一行之前，标示出该行的列数编号。</li>
<li>-q   –quiet或–silent   #不显示任何信息。</li>
<li>-r   –recursive   #此参数的效果和指定“-d recurse”参数相同。</li>
<li>-s   –no-messages   #不显示错误信息。</li>
<li>-v   –revert-match   #显示不包含匹配文本的所有行。</li>
<li>-V   –version   #显示版本信息。</li>
<li>-w   –word-regexp   #只显示全字符合的列。</li>
<li>-x    –line-regexp   #只显示全列符合的列。</li>
<li>-y   #此参数的效果和指定“-i”参数相同。</li>
</ul>
<h2 id="4．规则表达式"><a href="#4．规则表达式" class="headerlink" title="4．规则表达式"></a>4．规则表达式</h2><h3 id="grep的规则表达式"><a href="#grep的规则表达式" class="headerlink" title="grep的规则表达式:"></a>grep的规则表达式:</h3><ul>
<li><p>^  #锚定行的开始 如：’^grep’匹配所有以grep开头的行。 </p>
</li>
<li><p>$  #锚定行的结束 如：’grep$’匹配所有以grep结尾的行。 </p>
</li>
<li><p>.  #匹配一个非换行符的字符 如：’gr.p’匹配gr后接一个任意字符，然后是p。</p>
</li>
<li><p>*  #匹配零个或多个先前字符 如：’*grep’匹配所有一个或多个空格后紧跟grep的行。</p>
</li>
<li><p>.*   #一起用代表任意字符。</p>
</li>
<li><p>[]   #匹配一个指定范围内的字符，如’[Gg]rep’匹配Grep和grep。</p>
</li>
<li><p>[^]  #匹配一个不在指定范围内的字符，如：’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头，紧跟rep的行。</p>
</li>
<li><p>\(..\)  #标记匹配字符，如’\(love\)’，love被标记为1。</p>
</li>
<li><p>\&lt;      #锚定单词的开始，如:’\&lt;grep’匹配包含以grep开头的单词的行。</p>
</li>
<li><p>\&gt;      #锚定单词的结束，如’grep\&gt;’匹配包含以grep结尾的单词的行。</p>
</li>
<li><p>x\{m\}  #重复字符x，m次，如：’0\{5\}’匹配包含5个o的行。</p>
</li>
<li><p>x\{m,\}  #重复字符x,至少m次，如：’o\{5,\}’匹配至少有5个o的行。</p>
</li>
<li><p>x\{m,n\}  #重复字符x，至少m次，不多于n次，如：’o\{5,10\}’匹配5–10个o的行。</p>
</li>
<li><p>\w    #匹配文字和数字字符，也就是[A-Za-z0-9]，如：’G\w*p’匹配以G后跟零个或多个文字或数字字符，然后是p。</p>
</li>
<li><p>\W    #\w的反置形式，匹配一个或多个非单词字符，如点号句号等。</p>
</li>
<li><p>\b    #单词锁定符，如: ‘\bgrep\b’只匹配grep。</p>
</li>
</ul>
<h3 id="POSIX字符"><a href="#POSIX字符" class="headerlink" title="POSIX字符:"></a>POSIX字符:</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;为了在不同国家的字符编码中保持一至，POSIX(The Portable Operating System Interface)增加了特殊的字符类，如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式，如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外，都支持POSIX的字符类。</p>
<ul>
<li><p>[:alnum:]    #文字数字字符</p>
</li>
<li><p>[:alpha:]    #文字字符</p>
</li>
<li><p>[:digit:]    #数字字符</p>
</li>
<li><p>[:graph:]    #非空字符（非空格、控制字符）</p>
</li>
<li><p>[:lower:]    #小写字符</p>
</li>
<li><p>[:cntrl:]    #控制字符</p>
</li>
<li><p>[:print:]    #非空字符（包括空格）</p>
</li>
<li><p>[:punct:]    #标点符号 </p>
</li>
<li><p>[:space:]    #所有空白字符（新行，空格，制表符）</p>
</li>
<li><p>[:upper:]    #大写字符 </p>
</li>
<li><p>[:xdigit:]   #十六进制数字（0-9，a-f，A-F）</p>
</li>
</ul>
<h2 id="5．使用实例"><a href="#5．使用实例" class="headerlink" title="5．使用实例"></a>5．使用实例</h2><h3 id="实例1：查找指定进程"><a href="#实例1：查找指定进程" class="headerlink" title="实例1：查找指定进程"></a>实例1：查找指定进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps -ef|grep svn</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep svn</span></div><div class="line">root 4943   1      0  Dec05 ?   00:00:00 svnserve -d -r /opt/svndata/grape/</div><div class="line">root 16867 16838  0 19:53 pts/0    00:00:00 grep svn</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;第一条记录是查找出的进程；第二条结果是grep进程本身，并非真正要找的进程。</p>
<h3 id="实例2：查找指定进程个数"><a href="#实例2：查找指定进程个数" class="headerlink" title="实例2：查找指定进程个数"></a>实例2：查找指定进程个数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">ps -ef|grep svn -c</div><div class="line">ps -ef|grep -c svn</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep svn -c</span></div><div class="line">2</div><div class="line">[root@localhost ~]<span class="comment"># ps -ef|grep -c svn </span></div><div class="line">2</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：从文件中读取关键词进行搜索"><a href="#实例3：从文件中读取关键词进行搜索" class="headerlink" title="实例3：从文件中读取关键词进行搜索"></a>实例3：从文件中读取关键词进行搜索</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt | grep -f test2.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt </span></div><div class="line">hnlinux</div><div class="line">peida.cnblogs.com</div><div class="line">ubuntu</div><div class="line">ubuntu linux</div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test2.txt </span></div><div class="line">linux</div><div class="line">Redhat</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt | grep -f test2.txt</span></div><div class="line">hnlinux</div><div class="line">ubuntu linux</div><div class="line">Redhat</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行</p>
<h3 id="实例4：从文件中读取关键词进行搜索-且显示行号"><a href="#实例4：从文件中读取关键词进行搜索-且显示行号" class="headerlink" title="实例4：从文件中读取关键词进行搜索 且显示行号"></a>实例4：从文件中读取关键词进行搜索 且显示行号</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt | grep -nf test2.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt </span></div><div class="line">hnlinux</div><div class="line">peida.cnblogs.com</div><div class="line">ubuntu</div><div class="line">ubuntu linux</div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test2.txt </span></div><div class="line">linux</div><div class="line">Redhat</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt | grep -nf test2.txt</span></div><div class="line">1:hnlinux</div><div class="line">4:ubuntu linux</div><div class="line">6:Redhat</div><div class="line">7:linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行，并显示每一行的行号</p>
<h3 id="实例5：从文件中查找关键词"><a href="#实例5：从文件中查找关键词" class="headerlink" title="实例5：从文件中查找关键词"></a>实例5：从文件中查找关键词</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">grep <span class="string">'linux'</span> test.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># grep 'linux' test.txt </span></div><div class="line">hnlinux</div><div class="line">ubuntu linux</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># grep -n 'linux' test.txt </span></div><div class="line">1:hnlinux</div><div class="line">4:ubuntu linux</div><div class="line">7:linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例6：从多个文件中查找关键词"><a href="#实例6：从多个文件中查找关键词" class="headerlink" title="实例6：从多个文件中查找关键词"></a>实例6：从多个文件中查找关键词</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">grep <span class="string">'linux'</span> test.txt test2.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># grep -n 'linux' test.txt test2.txt </span></div><div class="line">test.txt:1:hnlinux</div><div class="line">test.txt:4:ubuntu linux</div><div class="line">test.txt:7:linuxmint</div><div class="line">test2.txt:1:linux</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># grep 'linux' test.txt test2.txt </span></div><div class="line">test.txt:hnlinux</div><div class="line">test.txt:ubuntu linux</div><div class="line">test.txt:linuxmint</div><div class="line">test2.txt:linux</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;多文件时，输出查询到的信息内容行时，会把文件的命名在行最前面输出并且加上”:”作为标示符</p>
<h3 id="实例7：grep不显示本身进程"><a href="#实例7：grep不显示本身进程" class="headerlink" title="实例7：grep不显示本身进程"></a>实例7：grep不显示本身进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">ps aux|grep \[s]sh</div><div class="line">ps aux | grep ssh | grep -v <span class="string">"grep"</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ps aux|grep ssh</span></div><div class="line">root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd</div><div class="line">root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0 </div><div class="line">root  16901  0.0  0.0  61180   764 pts/0  S+   20:31   0:00 grep ssh</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ps aux|grep \[s]sh]</span></div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ps aux|grep \[s]sh</span></div><div class="line">root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd</div><div class="line">root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0 </div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ps aux | grep ssh | grep -v "grep"</span></div><div class="line">root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd</div><div class="line">root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0</div></pre></td></tr></table></figure>
<h3 id="实例8：找出已u开头的行内容"><a href="#实例8：找出已u开头的行内容" class="headerlink" title="实例8：找出已u开头的行内容"></a>实例8：找出已u开头的行内容</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt |grep ^u</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |grep ^u</span></div><div class="line">ubuntu</div><div class="line">ubuntu linux</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例9：输出非u开头的行内容"><a href="#实例9：输出非u开头的行内容" class="headerlink" title="实例9：输出非u开头的行内容"></a>实例9：输出非u开头的行内容</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt |grep ^[^u]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |grep ^[^u]</span></div><div class="line">hnlinux</div><div class="line">peida.cnblogs.com</div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例10：输出以hat结尾的行内容"><a href="#实例10：输出以hat结尾的行内容" class="headerlink" title="实例10：输出以hat结尾的行内容"></a>实例10：输出以hat结尾的行内容</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt |grep hat$</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |grep hat$</span></div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例11："><a href="#实例11：" class="headerlink" title="实例11："></a>实例11：</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ifconfig eth0|grep "[0-9]\&#123;1,3\&#125;\.[0-9]\&#123;1,3\&#125;\.[0-9]\&#123;1,3\&#125;\.[0-9]\&#123;1,3\&#125;"</span></div><div class="line">          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># ifconfig eth0|grep -E "([0-9]&#123;1,3&#125;\.)&#123;3&#125;[0-9]"</span></div><div class="line">          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例12：显示包含ed或者at字符的内容行"><a href="#实例12：显示包含ed或者at字符的内容行" class="headerlink" title="实例12：显示包含ed或者at字符的内容行"></a>实例12：显示包含ed或者at字符的内容行</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat test.txt |grep -E <span class="string">"ed|at"</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |grep -E "peida|com"</span></div><div class="line">peida.cnblogs.com</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># cat test.txt |grep -E "ed|at"</span></div><div class="line">redhat</div><div class="line">Redhat</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例13：显示当前目录下面以-txt-结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行"><a href="#实例13：显示当前目录下面以-txt-结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行" class="headerlink" title="实例13：显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行"></a>实例13：显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">grep <span class="string">'[a-z]\&#123;7\&#125;'</span> *.txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># grep '[a-z]\&#123;7\&#125;' *.txt</span></div><div class="line">test.txt:hnlinux</div><div class="line">test.txt:peida.cnblogs.com</div><div class="line">test.txt:linuxmint</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment">#</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/40. Linux 命令- cal/">Linux 命令- cal</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cal命令可以用来显示公历（阳历）日历。公历是现在国际通用的历法，又称格列历，通称阳历。“阳历”又名“太阳历”，系以地球绕行太阳一周为一年，为西方各国所通用，故又名“西历”。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cal [参数][月份][年份]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用于查看日历等时间信息，如只有一个参数，则表示年份(1-9999)，如有两个参数，则表示月份和年份</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-1 显示一个月的月历</li>
<li>-3 显示系统前一个月，当前月，下一个月的月历</li>
<li>-s  显示星期天为一个星期的第一天，默认的格式</li>
<li>-m 显示星期一为一个星期的第一天</li>
<li>-j  显示在当年中的第几天（一年日期按天算，从1月1号算起，默认显示当前月在一年中的天数）</li>
<li>-y  显示当前年份的日历</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示当前月份日历"><a href="#实例1：显示当前月份日历" class="headerlink" title="实例1：显示当前月份日历"></a>实例1：显示当前月份日历</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cal</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># cal</span></div><div class="line">   十二月 2012     </div><div class="line">日 一 二 三 四 五 六</div><div class="line">                   1</div><div class="line"> 2  3  4  5  6  7  8</div><div class="line"> 9 10 11 12 13 14 15</div><div class="line">16 17 18 19 20 21 22</div><div class="line">23 24 25 26 27 28 29</div><div class="line">30 31</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例2：显示指定月份的日历"><a href="#实例2：显示指定月份的日历" class="headerlink" title="实例2：显示指定月份的日历"></a>实例2：显示指定月份的日历</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cal 9 2012</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># cal 9 2012</span></div><div class="line">     九月 2012      </div><div class="line">日 一 二 三 四 五 六</div><div class="line">                   1</div><div class="line"> 2  3  4  5  6  7  8</div><div class="line"> 9 10 11 12 13 14 15</div><div class="line">16 17 18 19 20 21 22</div><div class="line">23 24 25 26 27 28 29</div><div class="line">30</div></pre></td></tr></table></figure>
<h3 id="实例3：显示2013年日历"><a href="#实例3：显示2013年日历" class="headerlink" title="实例3：显示2013年日历"></a>实例3：显示2013年日历</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">cal -y 2013 </div><div class="line">cal 2013</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-cal/01.png?raw=true" alt="iamges"><figcaption class="figure__caption">iamges</figcaption></figure></p>
<h3 id="实例4：显示自1月1日的天数"><a href="#实例4：显示自1月1日的天数" class="headerlink" title="实例4：显示自1月1日的天数"></a>实例4：显示自1月1日的天数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cal -j</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># cal -j</span></div><div class="line">        十二月 2012        </div><div class="line">  日   一   二   三   四   五   六</div><div class="line">                        336</div><div class="line">337 338 339 340 341 342 343</div><div class="line">344 345 346 347 348 349 350</div><div class="line">351 352 353 354 355 356 357</div><div class="line">358 359 360 361 362 363 364</div><div class="line">365 366[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：星期一显示在第一列"><a href="#实例5：星期一显示在第一列" class="headerlink" title="实例5：星期一显示在第一列"></a>实例5：星期一显示在第一列</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cal -m</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># cal -m</span></div><div class="line">    十二月 2012     </div><div class="line">一 二 三 四 五 六 日</div><div class="line">                1  2</div><div class="line"> 3  4  5  6  7  8  9</div><div class="line">10 11 12 13 14 15 16</div><div class="line">17 18 19 20 21 22 23</div><div class="line">24 25 26 27 28 29 30</div><div class="line">31</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
	

	

</article>





	<span class="different-posts">📖 <a href="/page/53">more posts</a> 📖</span>



	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
